14

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

4 ответа4

18

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

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

sudo a2dismod php5

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

sudo a2enmod php7.1

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

sudo systemctl restart apache2
16

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

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

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

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

-1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .