Почему phpinfo () показывает версию, отличную от php -v? - PullRequest
0 голосов
/ 06 января 2020

Я устанавливаю php через варку. С заваркой установить PHP. Моя версия php-cli - 7.2

  • Но, если я использую phpinfo() на своем сервере, я получаю php версию 7.1.
  • Если я использую php -v в своем терминале, я получаю php версию 7.2.

1 Ответ

1 голос
/ 18 марта 2020

Отказ от ответственности: я добавляю этот , надеюсь, подробный ответ как часть значка 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 веб-сервера, чтобы он мог правильно подобрать новые двоичные файлы.

Пожалуйста, дайте мне знать, если это поможет вам решить вашу проблему. Для всех остальных читателей: Если вы считаете, что чего-то не хватает ИЛИ что-то не так в моем объяснении, пожалуйста, дайте мне знать с комментарием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...