Phpinfo () и php -v показывает другую версию PHP

Я хотел знать, какую версию 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 .

Более короткий ответ.

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

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

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

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

Вы говорите так:

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

 phpinfo(); 

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

 php -i or php -v 

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

Версия PHP, доступная из командной строки, на 100% не имеет ничего общего с версией 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 ? То, что я сделал, – это переименовать модуль Apache по умолчанию PHP 5.3.5 libphp5.so в libphp535.so с номером версии в имени, чтобы я мог найти его там для ссылки, а затем назвал PHP 5.1.6 (с поддержкой библиотеки GD) Модуль libphp516-gd.so поэтому я знаю, что это такое. Таким образом, у меня есть оба они доступны мне бок о бок в системе.

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

Если вы пытаетесь запустить 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 с той же версией, что и ваш веб-сервер, и когда вы выясните, какой из них он может использовать, вы можете использовать этот вариант вместо стандартного.

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

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

 sudo a2dismod php5 

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

 sudo a2enmod php7.1 

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

 sudo systemctl restart apache2 
  • Получить последнее дополнение файла в каталоге
  • Соединение CodeIgniter MSSQL
  • Как установить обновленную версию PEAR / PHPUnit на Ubuntu?
  • Apache 2.4 + php 5.4.7 не может загрузить php5apache2_4.dll
  • Должен ли MAMP возвращать :: 1 как IP на localhost?
  • как декодировать эту строку JSON?
  • Как переключить PHP 5.5 вместо PHP 5.4 в Bitnami
  • Symfony2 - Как получить доступ к именам динамических переменных в веточке
  • Как получить полезные сообщения об ошибках в PHP?
  • Разница в скорости при использовании встроенных строк против конкатенации в php5?
  • Как сделать асинхронные HTTP-запросы в PHP
  • Давайте будем гением компьютера.