2015-03-16 4 views
-1

У меня проблема с кодом, написанным для целевой PHP версии 5.3. В настоящее время у меня есть PHP версия 5.5.12 на моем ПК. Есть ли способ иметь больше, чем версия на одном компьютере или Что делать, чтобы эти коды работали отлично. Я использую сервер WAMP. СпасибоОбратная совместимость PHP

Я попытался следовать этой статье, но я застрял в том, как устанавливать старые версии вручную. Article Link

+0

Что исследование вы сделали до сих пор? – dedek

+0

У меня есть несколько статей и поиск здесь в stackoverflow, но результатов не найдено. Это помогло немного, но до сих пор не знает, как устанавливать версии вручную. Ссылка на статью: http: //blog.dynom.nl/archives/Multiple-PHP-versions-on-one-webserver_20091103_53.html –

ответ

1

Большое преимущество WAMPServer над всеми другими параметрами WAMP Stack заключается в том, что он может поддерживать несколько версий Apache/MySQL/PHP и позволяет вам переключаться между любыми из 3 по желанию, предполагая базовую совместимость между компиляторами и связями (по одному из них в любой момент времени).

Итак, предполагая, что вы хотите использовать версию 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, который вы хотите установить, из HERE или если его текущий выпуск от The Achives Вы должны использовать сборку Thread Safe. Обычно версия Not Thread Safe имеет acronim NTS, а в потокобезопасной версии есть 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 config, используемая 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.xyz имя папки.

Фактически найдите что-нибудь с 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 конкретные значения TimeZone изменения

Все расширения PHP закомментировано, так что вам нужно вручную раскомментируйте по крайней мере, некоторые из них

Проверьте свой последний использованный php.ini, чтобы узнать, что вам нужно, помните, что некоторые расширения могли быть включены в ядро ​​php, поэтому вам может потребоваться проверить журнал изменений php для получения более подробной информации.

Теперь могут быть другие изменения конфигурации, которые вы внесли в существующий PHP, вам придется найти и перенести себя. Предлагаю вам сравнить ваш последний \ wamp \ bin \ apache \ apachex.y.z \ bin \ php.ini с этим новым и переместить все, что вы считаете релевантным.

DONT FORGET, если вы используете PHP CLI, вам также нужно будет сделать это в файле php.ini.

Убедитесь, что все службы остановлены в wampmanager, а затем щелкните правой кнопкой мыши значок значка управления на панели задач и выберите пункт меню «Обновить».

Когда вы нажмете на wamp manager -> PHP -> Version, вы увидите свою новую версию в списке.

Если новая версия не отображается, возможно, вы неправильно указали имя файла phpForApache.ini. Исправьте его и повторите «обновление».

Теперь вы можете «перезагрузить все службы» из меню диспетчера wamp.

ПРИМЕЧАНИЕ: Вы ничего на самом деле ничего не изменили, поэтому, если WAMPServer, Apache, PHP и т. Д. Работали до того, как они еще должны быть.

Активируйте новую версию PHP.

С помощью меню управления Wamp снова нужно просто щелкнуть по номеру новой версии, чтобы активировать его.

wamp manager -> PHP -> Version -> 5.5.11 <- or whatever the version number is you have just added 

Это вызовет WAMP менеджер в: -

  1. Stop Apache (иконка будет идти Orange)
  2. Скопируйте нужные файлы из папки PHP в папку Apache или если вы находитесь на WAMPServer 2.5 или выше создайте правильный SYMLINK в папке apachex.yz/bin.
  3. Перезапустить Apache. Значок диспетчера Wamp снова должен появиться GREEN.

Если значок диспетчера wamp остается ORANGE, значит, вы что-то пропустили, возможно, неправильное имя файла. Файл phpForApache.ini должен существовать.

Теперь запустите localhost из меню диспетчера wamp и проверьте домашнюю страницу сервера Wamp. Он должен сказать вам, какая версия PHP загружена.

[IMG] http://derp.co.uk/27aaf[/img]

НЕИСПРАВНОСТЬ Если все пойдет не так, когда вы активируете новый PHP, вы можете легко вернуться из неприятностей, просто активируя любую версию PHP вы использовали до этого, а затем возвращаясь, чтобы увидеть, что вы сделали неправильно.

ДОБАВЛЕНИЕ Xdebug

Xdebug поставляется с WAMP Server, и невероятно полезно для отладки CLI или веб-скриптов. Но он не поставляется с 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.yz \ 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" 
+0

Это решило мою проблему .. Большое спасибо @RiggsFolly –

0

Вы можете установить php в качестве модуля fast-cgi в apache. Поэтому каждая версия php имеет свой собственный процесс и вызывается для каждого каталога vhost /.

Установка PHP-FPM

Для вашей записи ВХоста вы должны добавить

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/группы/режима, и т.д ..).

Если конфигурация завершена перезагрузка PHP-FPM и апач

+0

КПП. вы должны установить и скомпилировать старые версии php самостоятельно по адресу http://php.net/releases/ – Philipp

+0

Спасибо @Philipp, к сожалению, я на оконной машине, есть ли способ сделать это на окнах ... BTW спасибо за link .. –

+0

Идея такая же - для iis взгляните на: http://www.iis.net/learn/application-frameworks/install-and-configure-php-on-iis/run-multiple-versions -of-php-on-iis – Philipp

0

Я была такая же проблема при работе с устаревшим СМ клиентом по

Я установил VirtualBox с Linux (Ubuntu дистрибутивами, но это личное предпочтение) Тогда я сделал то же, что и Филипп.

Смежные вопросы