Отказ от ответственности: я добавляю этот , надеюсь, подробный ответ как часть значка Revival . (Ответьте более чем через 30 дней после того, как вопрос задан в качестве первого ответа с оценкой 2 или более)
TL; DR
php -v
настройки могут отличаться от phpinfo()
внутри вашего web-server
из-за запущенного состояния сервиса fpm и вашего веб-сервера. Возможно, вам нужно перезапустить php-fpm
и / или ваш web-server
(apache, nginx, ..).
Длинная версия: Командная строка
Вызовы на основе командной строки как php -v
или php -i
или php test.php
будет читать вашу конфигурацию, параметры и аргументы каждый раз, когда вы выполняете свой скрипт в терминале.
Это означает, что если вы обновите php в своей операционной системе, вы получите самую последнюю версию в сеансе терминала.
Внимание: в зависимости от ваших переменных PATH, вы все еще может получить старую версию.
Что это значит? Даже если вы обновите версию php в своей операционной системе, у вас все еще может быть старый сеанс терминала, который ссылается на более старый php -binary.
Вот пример: я пользователь OSX и установлен php до варево . В настоящее время php
ссылки на php@7.3
. Вот мой способ проверить, какие версии работают и где. Для этого я использую , который php.
$ which php
/usr/local/opt/php@7.3/bin/php
$ php -v
PHP 7.3.11 (cli) (built: Oct 24 2019 11:29:42) ( NTS )
// or the equivalent "absolute path" example
$ /usr/local/opt/php@7.3/bin/php -v
PHP 7.3.11 (cli) (built: Oct 24 2019 11:29:42) ( NTS )
У меня установлено несколько php -версий в моей локальной системе. Я могу запустить их всех индивидуально. Вот пример:
$ /usr/local/opt/php@7.2/bin/php -v
PHP 7.2.20 (cli) (built: Jul 5 2019 12:56:54) ( NTS )
Длинная версия: Почему мой phpinfo () использует неправильную php версию?
Поскольку у нас теперь есть понимание, что мы можем запускать несколько и разные версии php в одной операционной системе, давайте покопаемся в нашем скрипте на основе веб-сервера, который запускает phpinfo()
.
После установки новой версии php ваши двоичные файлы будут заменены новыми версии. Потрясающие! но ... как мой работающий веб-сервер получает уведомление об этом?
Для этого я буду обращаться к php документации Apache 2.x в Unix системах Точка 7 . Также apache позволяет нам загружать различные модули для PHP.
Отредактируйте ваш httpd.conf для загрузки модуля PHP. [...]
Для PHP 7: LoadModule php7_module modules/libphp7.so
Для PHP 5: LoadModule php5_module modules/libphp5.so
Поскольку вы выполняете обновление с PHP 7.1 до PHP 7.2, вероятно, изменений нет, но ваш веб-сервер все еще использует старую связанную версию php.
В этом случае может помочь перезапуск вашего apache веб-сервера, чтобы он мог правильно подобрать новые двоичные файлы.
Пожалуйста, дайте мне знать, если это поможет вам решить вашу проблему. Для всех остальных читателей: Если вы считаете, что чего-то не хватает ИЛИ что-то не так в моем объяснении, пожалуйста, дайте мне знать с комментарием.