1

Подробности:

Distributor ID: Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:        12.04
Codename:       precise
Bitnami used in AWS

Я хочу установить PHP 5.5, поэтому я делаю следующий шаг:

php -v
PHP 5.4.26 (cli) (built: Apr  8 2014 10:05:18)

sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5

Reading package lists... Done
Building dependency tree
Reading state information... Done

php5 is already the newest version.

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Когда я использую команду:

sudo apt-cache policy php5

Я получаю следующее:

php5:
  Installed: 5.5.29+dfsg-1+deb.sury.org~precise+3
  Candidate: 5.5.29+dfsg-1+deb.sury.org~precise+3
  Version table:
 *** 5.5.29+dfsg-1+deb.sury.org~precise+3 0
        500 http://ppa.launchpad.net/ondrej/php5/ubuntu/ precise/main amd64 Packages
        100 /var/lib/dpkg/status
     5.3.10-1ubuntu3.19 0
        500 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
     5.3.10-1ubuntu3 0
        500 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Я проверяю файлы по:

locate bin/php

/opt/bitnami/php/bin/php
/opt/bitnami/php/bin/php-cgi
/opt/bitnami/php/bin/php-cgi.bin
/opt/bitnami/php/bin/php-config
/opt/bitnami/php/bin/php.bin
/opt/bitnami/php/bin/phpize
/opt/bitnami/php/sbin/php-fpm
/usr/bin/php
/usr/bin/php-cgi
/usr/bin/php-config
/usr/bin/php-config5
/usr/bin/php5
/usr/bin/php5-cgi
/usr/bin/phpize
/usr/bin/phpize5
/usr/lib/cgi-bin/php
/usr/lib/cgi-bin/php5
/usr/sbin/php5-fpm
/usr/sbin/php5dismod
/usr/sbin/php5enmod
/usr/sbin/php5query

which php

/opt/bitnami/php/bin/php

Также я нахожу файл /home/bitnami/.bashrc где я вижу следующий путь :

PATH="/opt/bitnami/varnish/bin:/opt/bitnami/sqlite/bin:/opt/bitnami/php/bin:/op$
export PATH

Поэтому, если я использую команду /usr/bin/php -v я получу последнюю версию PHP 5.5:

PHP 5.5.29-1+deb.sury.org~precise+3 (cli) (built: Sep  8 2015 12:58:11)

Но если я использую php -v или phpinfo на моем сайте, всегда получаю старую версию PHP 5.4:

PHP 5.4.26 (cli) (built: Apr  8 2014 10:05:18)

Как я могу переключить версию PHP на 5.5? Что я должен сделать? Что мне нужно написать в настройках, чтобы включить PHP 5? или что нужно изменить в настройках Apache?

1 ответ1

2

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

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

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

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

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

Но если я использую php -v или phpinfo на моем сайте, всегда получаю старую версию PHP 5.4:

PHP 5.4.26 (cli) (built: Apr  8 2014 10:05:18)

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

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

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

Если вы еще не проверили версию PHP, используемую Apache, с помощью phpinfo() , это легко. В веб-корне вашего сервера просто создайте файл с именем phpinfo.php подобный этому; используя nano в этом примере:

nano phpinfo.php

Теперь просто добавьте это в этот файл и сохраните его:

<?php

phpinfo();

?>

Затем загрузите этот phpinfo.php через URL-адрес веб-браузера следующим образом:

http://hostname/phpinfo.php

И проверьте выходной результат. Там должно быть представлено множество деталей конфигурации, но главное, что вы хотите проверить, это заголовок, который должен что-то вроде «PHP версии 5.4.26» или «PHP версии 5.5.29». Это номер версии, на который вы хотите обратить внимание.

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

sudo nano /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.

Поиск нового файла PHP 5.5 libphp5.so .

Если вы не уверены, где находится новый файл PHP 5.5 libphp5.so сделайте следующее. Сначала установите locate в вашей системе, если она еще не установлена:

sudo apt-get install locate

После установки заставьте locate обновить свою базу данных следующим образом:

sudo updatedb

Подождите, пока locate перестроит базу данных файловой системы; это в основном похоже на Spotlight в Mac OS X, но для Linux. Теперь с этим сделать, сделать поиск locate для libphp5.so , как это:

locate libphp5.so

В вашей настройке должно быть несколько строк, которые будут возвращены:

/usr/lib/apache2/modules/libphp5.so
/path/to/the/php5.5/location/of/libphp5.so

Первый путь - это PHP 5.4 libphp5.so по умолчанию, но второй - это путь к модулю Apache libphp5.so PHP 5.5. Как только вы узнаете этот путь, откройте файл php5.load следующим образом:

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

Отрегулируйте там путь к модулю PHP 5.5 libphp5.so Apache. Затем перезапустите Apache следующим образом:

sudo service apache2 restart

И снова проверьте URL-адрес phpinfo.php через URL-адрес веб-браузера, например:

http://hostname/phpinfo.php

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