phpinfo () и php -v показывают разные версии PHP

18

Я хотел знать, какую phpверсию я использую, поэтому я написал стандартный скрипт:

phpinfo();

Что дает мне

PHP version 5.6.10

Правильная версия PHP , необходимая для моего приложения. Когда я попробовал в терминале:

php -i

или

php -v

Это показывает мне:

PHP version 5.3.2

Который мне не нужен. Тогда я попробовал с:

which php

Это показывает мне:

/usr/bin/php

Теперь я запутался, какую версию PHP я использую. Файлы загружаются на веб-сайт хостинга, и я не могу вносить какие-либо изменения в файлы конфигурации, такие как httpd.confили php.ini.

Габф Ханн
источник

Ответы:

22

Короче ответ.

Не паникуйте! Если вы обеспокоены тем, какую версию PHP использует ваш сервер Apache, phpinfo()вы всегда должны обратить внимание на вывод . Модуль Apache PHP и двоичный файл командной строки PHP - это две разные вещи, которые не мешают друг другу.

Фактически, вы можете компилировать и загружать различные версии PHP, которые вы хотите работать с Apache, при условии, что вы настроите Apache для его правильной загрузки. Интерфейс командной строки PHP никогда не вступит в игру в случае парсинга страниц Apache.

Версия PHP для командной строки просто для конкретных задач командной строки, и модуль PHP для Apache никогда не будет касаться, использовать или нуждаться в этом.

Более длинный ответ.

Вы говорите это:

Я хотел знать, какую phpверсию я использую, поэтому я написал стандартный скрипт:

phpinfo();

Что дает мне версию PHP 5.6.10 - правильную версию PHP, необходимую для моего приложения. Когда я попробовал в терминале:

php -i or php -v   

Он показывает мне версию PHP 5.3.2, которая мне не нужна.

Версия PHP, доступная из командной строки, не имеет ничего общего с версией PHP, загруженной как модуль. Это совершенно разные вещи.

Так что, если вы беспокоитесь о том, какую версию PHP использует ваше веб-приложение, если phpinfo()показывает версию 5.6.10, и это то, что вы хотите / нужно, это на 100% хорошо.

Версия PHP для командной строки - это совершенно отдельный системный элемент. Так что единственное, что имеет значение, - это результат phpinfo().

Если по какой-то причине вы хотели использовать другую версию PHP с Apache, все, что вам нужно сделать, это установить где-нибудь скомпилированный модуль Apache PHP и добавить или настроить эту строку в конфигурации Apache вашей системы:

LoadModule php5_module    /path/to/php/and/the/module/for/apache2/libphp5.so

И просто отрегулируйте путь к - libphp5.soкоторый Apache использует для разбора PHP - затем перезапустите Apache, и вы в бизнесе.

Например, в какой-то момент мне пришлось скомпилировать версию PHP 5.1.6 из исходного кода (с поддержкой библиотеки GD) для использования на машине с Ubuntu 12.04 под управлением PHP 5.3.5. В загрузочном файле PHP-модуля сервера здесь:

/etc/apache2/mods-available/php5.load

У меня были такие строки:

# LoadModule php5_module        /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module        /usr/lib/apache2/modules/libphp516-gd.so

Обратите внимание, как одна строка закомментирована, libphp535.soа другая libphp516-gd.so- закомментирована? Я переименовал libphp5.soмодуль PHP 5.3.5 по умолчанию в Apache libphp535.soна номер версии в названии, чтобы иметь его там для справки, а затем назвал модуль PHP 5.1.6 (с поддержкой библиотеки GD), libphp516-gd.soчтобы я знал, что это такое. как хорошо. Таким образом, они оба доступны для меня рядом в системе.

И, как я уже сказал, версия PHP, используемая в командной строке, не имеет ничего общего с модулем Apache PHP. Таким образом, вы можете иметь любое количество различных версий модулей Apache PHP, готовых к работе; просто настройте конфигурацию и перезапустите Apache, и вы должны быть в бизнесе, чтобы использовать любую версию PHP, которую вы указали, Apache должен использовать.

JakeGould
источник
24

Если у вас возникла эта проблема при обновлении с PHP5 до PHP7 в Ubuntu 14.04 с Apache, вот что мне помогло (кредит здесь ):

Отключить модуль PHP5 на Apache:

sudo a2dismod php5

Теперь включите PHP7:

sudo a2enmod php7.1

Для отражения изменений требуется перезапуск Apache:

sudo systemctl restart apache2
Ян Жаньковский
источник
это может привести к краху проекта, если php.ini отличаются
KawaiKx
также убедитесь, что библиотеки php для новой версии установлены, я имею в виду gd, mcrypt, xml и т. д.
korwalskiy
2

Если вы пытаетесь запустить код PHP с вашего веб-сервера, то версия, которую вы используете, указана вphpinfo() = 5.6.10 .

На вашем сервере установлено несколько версий PHP, и когда вы входите в систему и запускаетесь phpиз командной строки, вы получаете старую версию, которая установлена ​​в / usr / bin / php.

Сервер может иметь много версий PHP, и, похоже, ваша.

Если вам нужно вручную выполнить тот же PHP, что и ваш веб-сервер, вам нужно найти другую версию. Попробуйте запустить эти команды:

/usr/local/bin/php -v
/opt/local/bin/php -v
/opt/bin/php -v

Один из них может показать PHP с той же версией, что и ваш веб-сервер, и когда вы выясните, какой это, вы можете использовать его вместо значения по умолчанию.

Росс Перкинс
источник
0

Если я могу добавить свои 2 цента ...

Я обновлял свою версию Nextcloud. Когда я запускаю процедуру обновления, я должен "sudo php" как пользователь apache, но он отказался запускаться, потому что версия php CLI, запускаемая по умолчанию пользователем apache, была слишком старой. Тем не менее, phpinfo (); на моем сервере отображается последняя установленная версия php.

Я понял, что это потому, что переменная PATH в файле /home/apache/.bashrc была установлена ​​на первую версию php, которую я установил на своем сервере , и она никогда не обновлялась снова (я всегда компилирую / устанавливаю php из исходного кода на Github )

Решение:

Когда вы обновляете php на своем веб-сервере и хотите убедиться, что используемая версия CLI php является самой последней, когда вы используете sudo в качестве пользователя apache, не забудьте изменить его в файле .bashrc этого пользователя, например так:

PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH

JeffCourteau
источник
-1

Шаги, чтобы это исправить. Прежде всего, какая версия PHP показывает вам.

php -v

Теперь вам понадобится путь PHP. Если вы не знаете, то можете обратиться в службу поддержки вашего пути PHP. В моем случае это было

/opt/php71/bin/php

Теперь пришло время запустить эту команду в терминале.

alias php='/opt/php71/bin/php'

Это изменит вашу версию PHP на PHP 7.1. Если вы хотите изменить ее на 7.2, вы можете попробовать

alias php='/opt/php72/bin/php'

Вы сделали. Проверьте это с помощью

php -v
Акрам Чаухан
источник
-3

Создайте путь к переменной среды для последней версии php, например: C: \ wamp64 \ bin \ php \ php7.2.4 Теперь измените вашу папку php предыдущей версии .php5.6.35 на другой номер php5.6.354 .. Затем проверьте php -v вашего wamp сервер и cli php будут одинаковыми

судхип кр
источник