Сообщается о проблеме разных версий PHP - PullRequest
4 голосов
/ 14 февраля 2011

Я обновился до PHP 5.3 на компьютере для разработки (Windows 7 box).

php-v показывает

PHP 5.3.3 (cli) (built: Jul 21 2010 20:36:55)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Однако phpinfo.php показывает, что версия на компьютере: 5.2.14, как показано dump from phpinfo page

Загруженный файл конфигурации справедливо загружает правильный файл php.ini для 5.3 Файл конфигурации (php.ini) Путь неправильно читает: C: \ Windows - я не устанавливаю PHP по указанному пути. Однако я провел рекурсивный поиск папок и файлов PHP внутри этого файла, но поиск ничего не дал.

Приложения, похоже, используют настройки, о которых сообщает phpinfo, а не php -v или php -m или php -i (или еще).

Помимо удаления папки PHP и запуска с нуля (что я и сделал) и обеспечения того, чтобы Apache указывал на правильный каталог PHP с помощью PHPINIDir, что я мог бы сделать, чтобы решить эту проблему? Спасибо.

Ответы [ 2 ]

5 голосов
/ 14 февраля 2011

Hello

Вам также следует обновить apache php модуль


@ soju - это исправило, спасибо, но я подумал, что сделаю это немного понятнее для других.

Apache требует, чтобы модуль php обслуживал файлы php. В Windows это файл .dll. Это будет называться: php5apache2_2.dll - находится в вашей папке php. Странно, однако, что при обновлении папки php более новой версией вы можете обнаружить, что apache по-прежнему использует старый файл модуля php. Таким образом, хотя php -v правильно сообщает о новой версии, Apache по-прежнему смотрит на старый модуль php (сообщает phpinfo). Чтобы узнать, какая у вас версия модуля, вы можете: щелкнуть правой кнопкой мыши по файлу .dll> выбрать свойства -> просмотреть вкладку сведений. Или просто наведите курсор на файл.

details screen of php5apache.dll file

Если эта версия не то, что вам нужно, вы можете найти более новую версию и заменить ее. Хорошая идея сделать резервную копию в первую очередь. Кроме того, файл php5apache.dll работает с файлом php5ts.dll и требует наличия файла, поэтому убедитесь, что эти файлы имеют одинаковые версии.

С вашим файлом httpd.conf с директивой:

LoadModule php5_module "\path to\php5apache2_2.dll"

Вы можете перезапустить apache и улыбнуться!

1 голос
/ 14 февраля 2011

Ваш php командной строки (CLI) - это другая версия, отличная от той, что используется для Apache. Проверьте также, что оба используют один и тот же php.ini. Когда вы звоните на вашем компьютере с Windows

c:\path\to\php\php.exe -v 

или

c:\path\to\php\php-win.exe -v 

и

c:\path\to\php\php-cli.exe -v 

Все они могут возвращать разные версии. Часто это происходит при обновлении до новой версии WAMP и забыл удалить старые версии. Я уверен, что вы найдете исполняемый двоичный файл PHP, который соответствует той же версии. Также можно использовать php.exe или php-win.exe вместо php-cli.exe в Windows.

...