Можно ли кодировать PHP в Windows и размещать его позже на сервере под управлением Linux? Могут ли быть проблемы с миграцией такого проекта?
Я бы подумал, что действительно не может быть никаких проблем, тем более что я новичок в PHP и не буду использовать какие-либо расширенные функции, которые могут зависеть от ОС. Тем не менее, я хотел бы убедиться, потому что я действительно не люблю Linux на всех.
Ответы:
Некоторые указатели:
Чувствительность к регистру файловой системы
Если ваш файл называется HelloWorld.php, это:
законно на винде и будет работать. Но имена файлов Linux чувствительны к регистру, вы можете иметь файлы с именами
HelloWorld.php
,helloworld.php
,hEllOwOrlD.php
в том же каталоге. Таким образом, вы должны разрабатывать в Windows, как если бы вы разрабатывали в чувствительной к регистру файловой системе: использование точно правильных имен файлов, имен каталогов, имен расширений -.php
также отличается от.PHP
.Разделители каталогов и путей
В Windows мы говорим:
Но в Linux мы бы сказали:
PHP достаточно умен, чтобы не волноваться, оба разделителя работают в обеих системах. Но вы должны быть последовательными и использовать косую черту (/) везде, так как это также норма в большинстве систем. Существует отличная предопределенная константа,
DIRECTORY_SEPARATOR
которая переводит на правильную, если вы хотите пойти так далеко:То же самое касается разделителя пути, который является точкой с запятой в Windows, в противном случае - двоеточием. Поэтому, чтобы быть в безопасности, вы должны сделать:
когда нужен разделитель пути. Хотя большинство людей думают, что, поскольку PHP не возражает против того, какой разделитель вы используете, это нормально, но есть один важный момент: разделители будут специфичными для системы, когда вы запрашиваете у системы каталоги или пути. Допустим, вы хотите разбить путь включения на его части:
Кодировка и разделитель файлов
Вы должны установить в своей среде IDE для установки кодировки файлов для всех ваших сценариев значение UTF-8 вместо Cp *, а разделитель строк файла - Unix (
"\n"
вместо"\r\n"
). В большинстве случаев это не имеет большого значения, но вы должны быть последовательны, и лучший способ - это способ Unix (который отлично работает в Windows, но не наоборот).источник
Вы не можете работать
strftime()
с%e
в среде Windows , как отмечается в справочной странице :источник
Там не будет никаких проблем с запуском кода. Если вы отредактируете файлы, сохраненные в Windows в Linux, вы можете заметить, что символы конца строки могут отличаться, но это не повредит. Если это не сработает, настройте IDE / редактор Windows для использования конца строки Unix.
источник
Настройте себя на тестовом стенде Linux. Это может быть виртуальный компьютер с Linux, работающий под Windows, это может быть компьютер с двойной загрузкой, это может быть система друга. Затем, время от времени (например, по понедельникам), переносите ваш код в систему Linux и тестируйте его.
Другие ответы касались основных проблем, с которыми вы столкнетесь, но есть множество мелких ошибок, таких как:
Да, есть способы тщательно обойти все эти различия, но вы были осторожны, чтобы использовать обходные пути? Конечно нет - вы закодировали, и он запустился, поэтому все должно быть в порядке.
Не помещайте ничего на хост-компьютер, пока он не будет протестирован в аналогичной операционной системе.
У меня нет опыта переноса с Windows на Linux, но у меня есть некоторый опыт переноса с Linux на Windows и больше опыта переноса с Linux на OS X. Это может быть сделано, но ключи - это тестирование, тестирование и тестирование.
источник
Несмотря на то, что я довольно комфортно отношусь к командной строке Linux и к инструментам редактирования Linux, таким как vim, я делаю большую часть своей разработки PHP на машине с Windows.
У меня есть виртуальный сервер в интернете (работает около 20 долларов в месяц), который я использую в качестве сервера разработки, и я подключаюсь к нему с помощью FileZilla. FileZilla загружает файлы, которые я редактирую, во временный каталог и отслеживает сохраненные файлы, а когда я сохраняю их, возвращает их обратно на сервер dev, и я проверяю их оттуда.
Это немного громоздко, но позволяет мне заниматься разработкой практически везде; используя FileZilla и простой редактор на флэш-накопителе, я даже могу подключиться с другого компьютера и внести изменения. Все тестирование всегда проводится на сервере Linux, поэтому я улавливаю любые проблемы, которые я мог вызвать из коробки - меньше неприятных сюрпризов, когда я выбрасываю код на сервер.
Вы можете сделать то же самое с дешевой учетной записью хостинга (хотя в зависимости от того, какое приложение вы разрабатываете, у вас могут возникнуть проблемы с производительностью, поскольку дешевые учетные записи хостинга, как правило, довольно слабы), и другие приложения FTP также имеют функции редактирования и редактирования. загрузить функциональность.
источник
Да, это можно сделать, но несколько вещей, которые вы должны рассмотреть. Проверьте ответы для получения дополнительной информации.
Это одна из тех вещей, которые иногда приходится делать разработчикам из-за ресурсов, а не потому, что им это нравится.
У вас может быть локальный веб-сервер (apache, cherokee, даже M $) на вашем ПК и установленный PHP-сервер. И ваш компьютер может не иметь подключения к Интернету или может подключаться только в течение коротких периодов времени.
Позже вы можете обновить реальный веб-сайт, обновив свой файл на реальном сервере с помощью инструментов ftp, с того же компьютера или другого компьютера, подключенного к Интернету.
источник
Как сказал большинство людей, проблем не должно быть. Тем не менее, VirtualBox позволяет действительно легко установить виртуальную машину Linux, на которой вы можете протестировать свою кодовую базу, чтобы убедиться, что она работает в производственной среде, не имея удобной рабочей среды.
источник