Почему phpinfo () показывает версию 5.5.9, а php -v показывает версию 7.0

Вы можете использовать find:

find /yourdir -name '*JOHN*' -exec cp {} ~/folder/  \;

Смежный вопрос на SO.

2
22.01.2017, 05:42
3 ответа

Я подозреваю (у меня нет окна Ubuntu для проверки), что проблема связана с разницей между php-cgi и прямым php, используемым в командной строке. Похоже, что Ubuntu использует phpX-cgi при установке стека LAMP. Версия cgi использует файл php.ini, и это может еще больше усложнить ситуацию, поскольку изменит путь к cwd.

0
27.01.2020, 22:19

phpinfo () показывает версию модуля Apache PHP, который предоставляется libapache2-mod-php . Вам необходимо обновить его (или установить одну из конкретных версий, например libapache2-mod-php7.1 ).

1
27.01.2020, 22:19

Почему я вижу несоответствие?

во время компиляции ( make ) время - исходная конфигурация PHP запускает создание нескольких SAPI. например, php-cli , php-cgi , php-debug и другие в зависимости от конфигурации времени компиляции.
Примечание: у вас может не быть доступа к параметрам конфигурации времени компиляции с пакетной версией PHP для debian или ubuntu, как это делали разработчики пакета - в прошлом (не уверен, что это все еще применимо) - внесены изменения, которые подавляют печать конфигураций времени компиляции (с использованием php-config ), см .: https://lists.ubuntu.com/archives/ubuntu-server-bugs/2010-April / 034631.html

В противном случае каждый SAPI представляет собой двоичный исполняемый файл, который обеспечивает точку взаимодействия для всего, что хочет запустить код PHP в интерпретаторе PHP. Во время make install или checkinstall --pkgname = php-self-compiled или конфигурации пакета эти SAPI будут размещены в разных местах вашей файловой системы.
cli SAPI, который вы получаете при запуске php -v , скорее всего, будет размещен где-нибудь вроде / bin / php или / usr / bin / php , а cgi SAPI будет запущен как демон (как часть подсистемы веб-сервера) при загрузке через сценарий инициализации или systemd.
Таким образом, веб-сервер, который хотел запустить сценарий PHP, будет использовать - предварительно запущенный экземпляр php-cgi SAPI и передать ему сценарий для запуска. Этот SAPI будет иметь свою собственную конфигурацию времени выполнения (ее можно будет просмотреть, запустив сервер с помощью strace .)
Если вы запустите php из командной строки, вы снова получит другой SAPI, возможно, с его собственной конфигурацией времени выполнения, опять же, это можно подтвердить с помощью strace php -v .

Каждый SAPI - обычно - происходит из одной и той же операции компиляции и, таким образом, имеет много общих конфигураций времени компиляции (например, какие расширения следует добавить и должны ли они быть скомпилированы статическими или связанными во время выполнения), а также номер версии и т. Д.
Вот почему при попытке проверить конфигурацию PHP вы получаете поведение, достаточно похожее, чтобы заставить вас думать, что это одна и та же программа, но все же в некотором роде несовместимые, это отдельные программы, много одних и тех же объектов под капотом, но имеют разные конфигурации и предназначены для обслуживания разных сред, например, когда PHP-cli (который запускает композитор) печатает сообщения об ошибках, он ожидает, что они будут напечатаны на терминале, поэтому он печатает простой текст, когда php-fpm или php-cgi выводит ту же ошибку, он переносит ее в HTML, поскольку предполагает, что с ней взаимодействует какой-то связанный с Интернетом процесс . php-debug снова будет взаимодействовать с другим интерфейсом, получать соединения для передачи данных на порт 9000 и т. д.

1
27.01.2020, 22:19

Теги

Похожие вопросы