У меня проблемы с запуском кода, написанного для целевой версии PHP 5.3. В настоящее время у меня на компьютере установлена версия PHP 5.5.12. Есть ли способ иметь более одной версии на одном компьютере или что я должен сделать, чтобы эти коды работали идеально. Использую WAMP сервер. Спасибо
Я пытался следовать этой статье, но застрял на том, как установить более старые версии вручную. Ссылка на статью
Большое преимущество WAMPServer перед всеми остальными опциями стека WAMP заключается в том, что он может поддерживать несколько версий Apache / MySQL / PHP и позволяет вам переключаться между любой из трех по желанию, предполагая базовую совместимость между компиляторами и связями (по одной на каждую в любое время, конечно).
Поэтому, если вы хотите использовать версию PHP5.3, совместимую с Apache 2.4, такую как 5.3.28+, все, что вам нужно сделать, это вручную установить версию PHP в ваш WAMPServer2.5.
КАК РУЧНО УСТАНОВИТЬ НОВЫЙ ВЫПУСК PHP В СРЕДУ WAMP
Прежде чем ты начнешь
На Apache и PHP вы увидите сокращения VC6, VC9, VC10 или VC11. Это обозначает версию компилятора, используемую для компиляции этой программы или DLL.
К сожалению, вы не можете смешивать их, когда дело доходит до Apache и PHP, так как они настроены в WAMPServer, хотя в некоторых документах предполагается, что VC10 и VC11 совместимы друг с другом, Я не даю никакой гарантии.
Итак, сначала вы должны выяснить, какой компилятор использовался для компиляции Apache, который вы сейчас используете, чтобы вы могли получить PHP, скомпилированный с той же версией компилятора.
Со временем это усложняется, так как более новые версии PHP не компилируются и не связаны с более старыми версиями компиляторов. VC6, кажется, был отброшен некоторое время назад. Поэтому, если вы хотите использовать новый PHP, вам, вероятно, придется обновить свою версию Apache, чтобы у вас была версия, скомпилированная как минимум с VC9.
Взаимодействие PHP и Apache при установке WAMPServer по умолчанию заключается в том, что Apache запускает PHP Interpereter как dll (php5apachex_y.dll), поскольку это очень тесные отношения, т.е. не связь через TCP-порт, такой как PHP и MySQL, поэтому они оба должны были скомпилированы с использованием той же версии Microsoft Visual C Compiler.
Из WampManager «Остановить все службы».
Загрузите версию PHP, с которой вы хотите установить ВОТ или если это не текущий выпуск от Ахив
Вы должны использовать Thread Safe build. Обычно версия Not Thread Safe имеет аббревиатуру NTS, а версия Thread Thread — TS или ничего.
Вы должны скачать ZIP, а не .msi
Убедитесь, что он собран с теми же версиями компилятора, что и у вас Apache (VC6 / VC9 / VC10 / VC11),
да, это мое поле. Но если вы используете WAMPServer 2.5 или>, то вам нужна версия VC11 Thread Safe, но также могут работать версии, скомпилированные с VC9 и VC10.
Создайте новую папку в каталоге c: \ wamp \ bin \ php \ с именем = версия, которую вы устанавливаете, например, создайте папку с именем php5.5.11.
Теперь из папки, содержащей ваши самые последние (и работающие) версии PHP, скопируйте файл wampserver.conf и вставьте его в новую папку PHP, созданную в предыдущей настройке. Этот файл необходим wamp-серверу, чтобы правильно определить, что это допустимая папка версии PHP. Файл содержит ссылки на имена DLL-файлов, которые содержат интерпретатор PHP, так что правильный файл может быть скопирован в папку Apache при активации этой новой версии интерпретатора PHP.
Файл должен выглядеть следующим образом: если вы переходите с очень старой версии PHP, вам может понадобиться добавить несколько новых разделов в ваш файл.
<?php
$phpConf['phpIniDir'] = '.';
$phpConf['phpExeDir'] = '.';
$phpConf['phpConfFile'] = 'php.ini';
$phpConf['apache']['2.2']['LoadModuleName'] = 'php5_module';
$phpConf['apache']['2.2']['LoadModuleFile'] = 'php5apache2_2.dll';
$phpConf['apache']['2.2']['AddModule'] = '';
$phpConf['apache']['2.4']['LoadModuleName'] = 'php5_module';
$phpConf['apache']['2.4']['LoadModuleFile'] = 'php5apache2_4.dll';
$phpConf['apache']['2.4']['AddModule'] = '';
?>
Более поздние версии PHP, т.е. PHP6.5 и выше, не скомпилированы для работы с Apache 2.2, поэтому вы должны изменить файл, чтобы он выглядел следующим образом
<?php
$phpConf['phpIniDir'] = '.';
$phpConf['phpExeDir'] = '.';
$phpConf['phpConfFile'] = 'php.ini';
$phpConf['apache']['2.4']['LoadModuleName'] = 'php5_module';
$phpConf['apache']['2.4']['LoadModuleFile'] = 'php5apache2_4.dll';
$phpConf['apache']['2.4']['AddModule'] = '';
?>
Теперь разархивируйте загруженный PHP в вашу новую папку, убедитесь, что иерархия папок выглядит как существующая иерархия в существующей версии PHP.
Теперь в новой папке скопируйте файл php.ini_development в новый файл php.ini
Повторите то же самое, но вставьте в файл phpForApache.ini.
Теперь у вас должен быть оригинальный файл с именем php.ini_development PLUS 2, один с именем php.ini, а другой с именем phpForApache.ini.
Файл ‘php.ini’ используется, если вы используете PHP CLI, т.е. запускаете php из командной строки ‘> php script.php’
PhpForApache.ini — это конфигурация php, используемая Apache. Этот файл копируется в текущую активную папку Apache и переименовывается в php.ini с помощью WAMPManager при активации этой версии PHP.
Теперь мы должны внести некоторые изменения в файлы php.ini, чтобы WAMPise их. Не торопись здесь, это сэкономит тебе время позже. Отредактируйте созданный файл phpForApache.ini и найдите extension_dir и измените на
extension_dir = "d:/wamp/bin/php/phpx.y.z/ext/" <- where x,y,z match the folder you are putting the new PHP into.
Ищи
error_log = php_errors.log
и изменить на
error_log = c:\wamp\logs\php_errors.log
Найдите что-нибудь ‘php /’ и убедитесь, что вы изменили его на имя вашей папки c: \ wamp \ bin \ php \ php.x.y.z.
На самом деле ищите что-нибудь с C: \ и убедитесь, что оно заменено на эквивалент WAMPServer.
Начиная с PHP5.4 часовой пояс должен быть установлен
Ищите «часовой пояс» и введите как минимум запись в поле «date.timezone»
date.timezone = "Europe/London"date.default_latitude = 0.0
date.default_longitude = 51.502973
посмотрите здесь список поддерживаемых значений часового поясаhttp://www.php.net/manual/en/timezones.php‘
PHP5.5 конкретные изменения
Все расширения PHP закомментированы, поэтому вам необходимо вручную раскомментировать хотя бы некоторые из них.
Проверьте ваш последний использованный php.ini, чтобы увидеть, что вам нужно, помните, что некоторые расширения могли быть включены в ядро php, поэтому вам может понадобиться проверить подробности в журнале изменений php.
Теперь вполне могут быть и другие изменения конфигурации, которые вы внесли в существующий PHP, и вам придется их найти и перенести самостоятельно.
Я предлагаю вам сравнить ваш последний \ wamp \ bin \ apache \ apachex.y.z \ bin \ php.ini с этим новым и перебрать все, что вы считаете уместным.
НЕ ЗАБЫВАЙТЕ, если вы используете PHP CLI, вам также нужно будет сделать это и с файлом php.ini.
Убедитесь, что все сервисы остановлены в wampmanager, а затем щелкните правой кнопкой мыши значок менеджера wamp на панели задач и выберите пункт меню «обновить».
Когда вы щелкните левой кнопкой мыши на wamp manager -> PHP -> Version, вы увидите новую версию в списке.
Если новая версия не отображается, значит, вы неправильно написали имя файла phpForApache.ini. Исправьте это и повторите «обновление».
Теперь вы можете «перезапустить все сервисы» из меню Wamp Manager.
НОТА: На самом деле вы еще ничего не изменили, так что если WAMPServer, Apache, PHP и т. Д. Работали раньше, чем должны были быть.
Активируйте вашу новую версию PHP.
Чтобы снова воспользоваться меню менеджера wamp, вам просто нужно нажать на новый номер версии, чтобы активировать его.
wamp manager -> PHP -> Version -> 5.5.11 <- or whatever the version number is you have just added
Это заставит Wamp Manager: —
Если значок менеджера вампиров остается ОРАНЖЕВЫМ, значит, вы что-то упустили, возможно, имя файла написано неправильно. Файл phpForApache.ini должен существовать.
Теперь запустите localhost из меню менеджера wamp и проверьте домашнюю страницу сервера wamp. Он должен сказать вам, какая версия PHP загружена.
[IMG]http://derp.co.uk/27aaf[/img]ПОИСК НЕИСПРАВНОСТЕЙ
Если все идет не так, как надо, когда вы активируете новый PHP, вы можете легко выйти из неприятностей, просто активировав любую версию PHP, которую вы использовали ранее, а затем вернувшись, чтобы увидеть, что вы сделали неправильно.
ДОБАВЛЕНИЕ XDEBUG
XDEBUG поставляется с сервером WAMP и невероятно полезен для отладки скриптов CLI или WEB.
Но это не идет с PHP, который вы загрузили с сайта PHP.
При обновлении PHP до выпуска основной версии вам может понадобиться получить последнюю версию xdebug из ‘http://xdebug.org/download.php‘
Для незначительного обновления версии вы, вероятно, можете использовать существующую версию xdebug, которая у вас уже есть на диске.
Поэтому для незначительного обновления версии PHP скопируйте папку «c: \ wamp \ bin \ php \ php5.y.z \ zend_ext» из старого PHP в новую папку php.
Для обновления основной версии PHP получите новый dll с веб-сайта xdebug и поместите его во вновь созданную папку с именем ‘c: \ wamp \ bin \ php \ php5.y.z \ zend_ext’
Теперь добавьте такую строку (конечно, для конкретной версии) в ваш php.ini (используя меню менеджера wamp, чтобы убедиться, что вы редактируете правильный файл)
;XDEBUG Extension
zend_extension = "d:/wamp/bin/php/phpx.y.z/zend_ext/php_xdebug-2.2.2-5.3-vc9.dll"
[xdebug]
xdebug.remote_enable = off
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "d:/wamp/tmp"
Вы можете установить php как модуль fast-cgi в apache. Таким образом, каждая версия php имеет свой собственный процесс и вызывается для каждого каталога vhost /.
Установите php-fpm
Для вашей записи vhost вы должны добавить
AddHandler php5-fcgi .php
Action php5-fcgi /php5.fcgi
Alias /php5-fcgi /var/www/php5-fcgi
FastCgiExternalServer /var/www/php5.fcgi -socket /var/run/php5-fpm.sock
После настройки /etc/php5/fpm/pool.d/www.conf
(listener.owner / group / mode и т.д ..).
Если ваша конфигурация завершена, перезапустите php-fpm и apache
У меня была такая же проблема при работе с устаревшими клиентскими CMS
Я установил VirtualBox с Linux (дистрибутив Ubuntu, но это личное предпочтение)
Затем я сделал то же самое, что написал Филипп.