How to check if there are multiple versions of PHP installed on Ubuntu 12.04 LTS?
How to know if I have both php5.3 and php5.5 installed in my system? How to delete php5.3 if it is there and configuring Apache2 to work with php5.5?
7 Answers 7
I use the following command to view installed PHP versions in Ubuntu:
Second way go to php directory where all PHP version configuration file stored:
Since you have a Linux environment, you can run this on your console:
And then for anything that looks like a PHP binary, get the version. The output for me for the above is:
Out of those, there are a few that look like PHP binaries. So let’s get the version for each:
That will give you the versions of PHP you have installed.
I wouldn’t bother deleting an old version, it might remove files that will stop things working. You can just configure the console version, or the Apache version, to use the version you want.
In answer to your supplementary question: it seems that you’ve followed the instructions here to add an unofficial repo to your version of Ubuntu, since the standard repo does not support 5.5.
We discovered together that the way to get it working was first to upgrade Apache from 2.2 to 2.4:
It should be noted that this can cause some vhost repair to be required, as some Apache directives changed in this version. Once you have done that, you can get the new version of mod_php :
Как проверить версию PHP
PHP — один из наиболее часто используемых языков программирования на стороне сервера. Между версиями PHP есть некоторые важные различия, поэтому в некоторых ситуациях может потребоваться знать, какая версия работает на вашем сервере.
Например, если вы обновляете свое приложение или устанавливаете новое, для которого требуется определенная версия PHP, перед началом установки вам необходимо узнать версию вашего PHP-сервера.
В этой статье мы покажем вам, как проверить, какая версия PHP работает на вашем сервере.
Проверка версии PHP с помощью phpinfo()
В корневой каталог документов веб-сайта загрузите следующий файл PHP с помощью клиента FTP или SFTP :
Как только вы узнаете, какая у вас версия PHP, удалите файл или ограничьте к нему доступ. Предоставление публичного доступа к вашей конфигурации PHP может создать угрозу безопасности вашего приложения.
Проверка версии PHP из командной строки
Если у вас есть SSH-доступ к серверу, вы можете использовать двоичный файл PHP CLI для определения версии вашего PHP.
Команда выведет информацию о версии PHP и завершит работу. В этом примере версия PHP-сервера 7.3.11 :
Если на сервере установлено несколько версий PHP, при запуске команды php будет показана версия интерфейса командной строки PHP по умолчанию, которая может не совпадать с версией PHP, используемой на веб-сайте.
Выводы
Определение версии PHP-сервера — относительно простая задача.
В этом руководстве мы показали несколько различных вариантов того, как найти версию PHP, на которой в настоящее время работает ваш сервер.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Как узнать версию PHP на сервере
PHP – это скриптовый язык, который используется преимущественно при разработке приложений. С его помощью можно отправлять формы, работать с базами данных, использовать сессии, cookies и многое другое. От версии PHP, установленной на сайте или сервере, зависит то, как и какие возможности языка вы сможете использовать в проекте.
Поговорим о том, как узнать версию PHP сайта и сервера, причем разберем несколько способов.
Создание файла info.php и перемещение его на сервер
Сначала пробуем создать файл с прописанным содержимым. С его помощью мы определим конфигурацию интерпретатора PHP. Сделать это, кстати, можно двумя способами – на компьютере (а затем скопировать файл в корень сайта) или же сделать все прямо в файловом менеджере.
Первый способ: Открываем любой блокнот или редактор кода (лучше всего), потом вписываем в него вот такое значение:
Сохраняем это и даем название документу – info.php.
Второй способ: Открываем файловый менеджер через панель управления и переходим в корневую папку. Путь к ней – /wordpress/public_html. Жмем по пункту «Файл», в выпадающем меню выбираем элемент «Новый файл».
Теперь указываем название и формат будущего файла.
Вписываем в содержимое вот такое значение:
Потом сохраняем изменения нажатием на соответствующую кнопку и закрываем окно.
Теперь переходим к проверке. Для этого надо открыть новую вкладку в браузере и ввести там такую ссылку:
Здесь site.com нужно заменить ссылкой на ваш сайт (пример на скриншоте), затем перейти по нему нажатием на кнопку Enter. Откроется страница, на которой в левом верхнем углу отобразится версия PHP.
Просмотр версии PHP на сайте хостинга
Можно узнать версию PHP на хостинге TimeWeb, причем не просто посмотреть, но и изменить ее. Открываем в панели управления раздел «Сайты». По сути все, версию узнали, но не так подробно, как хотелось бы (сравните с другими примерами).
Дальше можно нажать на зеленую иконку с изображением шестеренки и тем самым перейти в настройки. Откроется новое окошко, где можно выбрать версию PHP и Python.
Как посмотреть, включен ли PHP для моего домена, его параметры и версию
Проверить, включен ли PHP для домена, можно довольно простым способом. Необходимо перейти в корневую директорию сайта, который привязан к домену, и создать в ней произвольный файл с расширением .php, например, phpinfo.php, открыть его при помощи любого текстового редактора и указать в нём следующий текст:
После этого вводим в браузере домен и имя созданного файла, в результате чего, если PHP для вашего домена активирован, то отобразится страница с его версией и всеми существующими параметрами, пример которой показан на изображении ниже.
Если же в браузере произошел вывод содержимого файла, то это значит, что для этого домена, либо для веб-сервера в целом в конфигурации не активирован/установлен PHP-обработчик.
Проверка версии и параметров PHP через консоль.
Проверить версию установленного на сервере интерпретатора PHP можно следующей командой:
Для проверки установленных в PHP модулей:
А чтобы получить вывод информации как о версии PHP на виртуальном VPS сервере, так и о его параметрах, необходимо ввести команду:
В результате отработает функция phpinfo(), которая и выведет в консоли всю информацию о параметрах. Чтобы сделать чтение результатов более удобным, можно вывод указанной команды перенаправить в файл, например, следующим образом:
PhpBrew. Менеджер версий PHP. (+ установка и использование в Ubuntu 13.10)
Лирическое №1
PHP неуклонно взрослеет и обзаводится различными полезными дополнениями и некоторые из них уже ну совсем как у старших (хотя слово «младших» во многих случаях подойдет лучше).
В этом ключе стоит, например, вспомнить такие замечательные вещи как менеджер зависимостей composer, встроенный веб-сервер, появление namespace’ов и замыканий.
Сложилось так, что в качестве рабочей OS у меня установлена последняя версия Ubuntu (13.10). Долгое время я довольствовался последней стабильной версией PHP из репозиториев (видимо везло), но тут по работе пришел проект на 5.3 (а то и 5.2, но под 5.3 завелся), который никак не хотел стартовать на последней 5.5.3, что из официальных репозиториев и я было опечалился (уже имеется опыт установки неактуального PHP на Ubuntu, хоть и успешный, но весьма грустный), но потом вспомнил ruby и rvm.io и решил провести небольшое исследование. В итоге коллега подсказал озвученную в заголовке вещь.
Конец лирического. К фактам.
Если вкратце – единственное назначение phpbrew – возможность использовать разные версии PHP на одной машине. Быстро, просто, практически без танцев с народными музыкальными инструментами. (не продакшен, не параллельная работа, но мгновенное переключение между версиями при разработке).
Чтобы не растекаться мыслью по древу приведу (плохо) переведенную выдержку из официального readme:
phpbrew способен собрать и установить несколько различных версий PHP в домашнюю директорию текущего пользователя.
Также phpbrew помогает управлять переменными окружения – при помощи команд use и switch можно легко переключаться между версиями PHP.
Cтоит добавить что не умеет он автоматически интегрироваться в nginx.
Установка
1) Установить зависимости согласно официальному документу с requirements
Скорее всего вам не понадобятся ВСЕ эти зависимости, поэтому имеет смысл установить минимальный требуемый для сборки чистого PHP набор, а дальше ориентироваться на сообщения PHP’шого configure, который все равно будет вызываться для проверке соответствия системы требованиям.
2) Устанавливаем собственно phpbrew, все по той же инструкции
3) По-прежнему по инструкции, инициализация
После этого нужно закрыть и снова открыть консоль (ну или просто сделать logout/login, это по ситуации) чтобы новые команды в bashrc проинициализировались. Или самостоятельно запустить в консоли
Готово. Можно пользоваться.
Настройка
Информация из этого пункта также доступна в официальном readme. И часть ее в официальном гайде troubleshooting.
Покажет список доступных версий (есть версии и старше – для них к команде нужно добавить ключ –old)
Покажет список доступных вариантов для установки PHP. (по факту — расширения с которыми PHP будет собираться)
phpbrew install [version] [variants] установит PHP нужной версии с указанными расширениями. Варианты перечисляются через пробел, каждый начинается с “+”. Например команда:
Загрузит и соберет PHP 5.3.28 с базовым набором компонентов (различные zip, json, mbstring и прочее повседневно-утилитарное)
* стоит отметить что (скорее всего так у вас ничего не соберется, см. раздел Troubleshooting этой статьи.
Загрузит и соберет PHP 5.3.28 с базовым набором компонентов а также с icu и intl (intl вполне логично не соберется без ICU, а без intl почему-то не собирается PHP 5.3 на Ubuntu)
Тут лирическое №2, по поводу root:
Чтобы добавить автоматически собранный модуль для apache2 нужно команде phpbrew install передать вариант +apxs2. Но.
Проблема в том, что Apache и его модули находятся не в пользовательских директориях, а посему phpbrew просто не сможет свой модуль никуда положить и упадет при попытках сделать это.
Workaround’а два – оба вполне официально предложены автором в разделе coockbook и оба мне не нравятся:
1) Устанавливать phpbrew и все сопутствующие штуки не в домашнюю директорию, а system-wide (все почти так же, только под root) – получается что как-то противоречит изначальной идеологии проекта. Подробно расписан в coockbook.
2) Временно разрешить себе запись в нужные директории.Потом не забыть запретить обратно. Ну это просто как-то неправильно.
Для Ubuntu 13.10 и apache 2.4.6 нужными будут /usr/lib/apache2/modules/ и /etc/apache2/mods-available/
После этих подготовительных процедур таки ставим PHP 5.3.28 с базовым набором компонентов, с модулем apache, а также с icu и intl:
Теперь проверим, что получилось:
Перезагрузим apache2 и проверим его:
Добавим еще одну версию точно таким же способом:
Еще раз перезагрузим apache2 и проверим:
Все готово, осталось прибрать хвосты. Возвращаем доступы к системным директориям apache в нормальное состояние и передаем владение собранными модулями root’у (ну чтобы не выбивались из общего потока):
Установка расширений
Еще один момент — установка расширений. Все проще простого — phpbrew интегрирован с PEAR.
Просто используйте команду:
$ phpbrew ext install [extension_name]
И дальше phpbrew сделает все сам. Скачает расширение, соберет его и активирует для активной версии php. Например:
Переключение версий
Собственно далее, если нужно переключить версию CLI – используем phpbrew use [version] (или phpbrew switch [version]), если же нужно переключить версию для apache2 – ищем где у apache происходит загрузка нашего модуля (в случае Apache 2.4.6 и Ubuntu 13.10 это будет /etc/apache2/mods-available/php5.load (или симлинк в mods-enabled), открываем его любым текстовым редактором и в строчке (например):
меняем версию на нужную нам (и, конечно, установленную в системе, например)
Перезагружаем apache и:
(да, вы правы, на самом деле этот тот же самый скриншот, что и в первом случае, тем не менее он отражает объективную действительность.)
Альтернативы:
Помимо этого решения существуют еще (как минимум) phpenv и php-version. С ними предлагаю ознакомиться самостоятельно (буде возникнет такая необходимость)
Troubleshooting
В общем-то все есть в официальном гайде. Два момента, с которыми столкнулся лично:
1) Проверка config жалуется на отсутствующий libpcre.(a|so) и ничего не собирает под таким неблаговидным предлогом.
Это не проблема phpbrew, эта проблема лежит на стыке ubuntu и php — php и не пытается искать библиотеки по нестандартным путям, Ubuntu, зачем-то держит их в не совсем стандартном расположении.
К счастью phpbrew позволяет при помощи ключа — передавать в make дополнительные параметры. Вам остается только найти эти библиотеки и скормить их команде phpbrew install.
Для Ubuntu 13.10 (скорее всего для всех основанных на Debian дистрибутивов) реальная команда для установки php в варианте из статьи будет выглядеть так:
2) При сборке php 5.3 появляется ошибка вида:
Баг специфичный именно для 5.3. Просто добавьте к phpbrew install варианты «+icu +intl» (как и делается везде в рамках этой статьи).














