Некоторые указатели:
Чувствительность к регистру файловой системы
Если ваш файл называется HelloWorld.php, это:
include "helloworld.php";
законно на винде и будет работать. Но имена файлов Linux чувствительны к регистру, вы можете иметь файлы с именами HelloWorld.php
, helloworld.php
, hEllOwOrlD.php
в том же каталоге. Таким образом, вы должны разрабатывать в Windows, как если бы вы разрабатывали в чувствительной к регистру файловой системе: использование точно правильных имен файлов, имен каталогов, имен расширений - .php
также отличается от .PHP
.
Разделители каталогов и путей
В Windows мы говорим:
include 'classes\myClass.php';
Но в Linux мы бы сказали:
include 'classes/myClass.php';
PHP достаточно умен, чтобы не волноваться, оба разделителя работают в обеих системах. Но вы должны быть последовательными и использовать косую черту (/) везде, так как это также норма в большинстве систем. Существует отличная предопределенная константа, DIRECTORY_SEPARATOR
которая переводит на правильную, если вы хотите пойти так далеко:
include "classes" . DIRECTORY_SEPARATOR . "myClass.php";
То же самое касается разделителя пути, который является точкой с запятой в Windows, в противном случае - двоеточием. Поэтому, чтобы быть в безопасности, вы должны сделать:
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
когда нужен разделитель пути. Хотя большинство людей думают, что, поскольку PHP не возражает против того, какой разделитель вы используете, это нормально, но есть один важный момент: разделители будут специфичными для системы, когда вы запрашиваете у системы каталоги или пути. Допустим, вы хотите разбить путь включения на его части:
$includePath = get_include_path();
$pathParts = explode(";", $includePath) // Will only work on Windows
$pathParts = explode(":", $includePath) // Will work on other systems but not Windows
$pathParts = explode(PATH_SEPARATOR, $includePath) // Will work everywhere!!!
Кодировка и разделитель файлов
Вы должны установить в своей среде IDE для установки кодировки файлов для всех ваших сценариев значение UTF-8 вместо Cp *, а разделитель строк файла - Unix ( "\n"
вместо "\r\n"
). В большинстве случаев это не имеет большого значения, но вы должны быть последовательны, и лучший способ - это способ Unix (который отлично работает в Windows, но не наоборот).