Как изменить версию php в консоли
Если у вас установлено несколько версий php в системе, то при вызове команды php в консоли, будет использоваться одна из них. Иногда необходимо для каких-то скриптов или сервисов управлять версией php в консоли. Я расскажу, как ее изменить.
Посмотрим, где располагается сам бинарник php:
Оказывается, что /usr/bin/php является символьной ссылкой. Посмотрим, куда она ведет:
Это еще одна символьная ссылка. Смотрим, куда ведет она:
На седьмую версию php. Заменим ее на 5.6, которая у меня установлена по адресу /usr/local/bin/php. Редактируем символьную ссылку:
Проверяем текущую версию php в консоли:
Все получилось. Теперь в консоли по-умолчанию будет использоваться нужная версия php. Можно проверять скрипты, не указывая полный путь к нужной версии.
Директории проверяются в том порядке, как они перечислены. Где будет найдено первое совпадение, тот файл и будет использоваться. В моем случае директория /usr/bin, где жила символьная ссылка на php7.0 стоит раньше, чем /usr/local/bin, где расположена php5.6. Можно было просто поменять местами эти директории в PATH и версия по-умолчанию станет 5.6, так как ее бинарник php будет найден раньше.
Более гибко управлять версиями php в системе можно с помощью программы update-alternatives. Она может делать в том числе и то, что мы сейчас проделали, только автоматически, в зависимости от своих настроек. С ее помощью можно более гибко управлять версиями, задавать приоритеты использования той или иной версии, быстро их переключать в полуавтоматическом режиме.
Установка и настройка PHP 7 на CentOS 7
Install PHP 7 on CentOS 7
В этом руководстве мы объясним, как установить или обновить до PHP 7.0. 7.1, 7.2 и 7.3 в системе CentOS 7. Мы также покажем вам, как интегрировать PHP с Nginx и Apache.
С помощью PHP 7 ваши приложения будут загружаться быстрее и потреблять меньше системных ресурсов. Также перед установкой конкретной версии PHP 7.x убедитесь, что она поддерживается вашим приложением.
Перед началом работы с этим учебником убедитесь, что вы вошли на свой сервер с учетной записью пользователя с привилегиями sudo или с пользователем root. Лучше всего запускать административные команды от имени пользователя sudo вместо root. Если в вашей системе нет пользователя sudo, вы можете создать его, следуя этим инструкциям.
Включение репозитория Remi
Пакеты PHP 7.x доступны в нескольких разных репозиториях. Мы будем использовать репозиторий Remi, который предоставляет более новые версии различных пакетов программного обеспечения, включая PHP.
В следующих разделах мы расскажем, как установить PHP 7.x, включив соответствующий репозиторий Remi. Если в вашей системе уже установлен PHP 5.4, yum обновятся пакеты PHP.
Установка PHP 7.3 на CentOS 7
PHP 7.3 является последней стабильной версией PHP. Большинство современных PHP-фреймворков и приложений, включая WordPress, Drupal, Joomla и Laravel, полностью поддерживают PHP 7.3.
Выполните следующие шаги, чтобы установить PHP 7.3 на CentOS 7.
Начните с включения репозитория PHP 7.3 Remi:
Установите PHP 7.3 и некоторые из наиболее распространенных модулей PHP:
Проверьте установку PHP, введя следующую команду, которая выведет версию PHP:
Установка PHP 7.2 на CentOS 7
Используйте PHP 7.2, только если вы собираетесь устанавливать такие приложения, как Magento 2, которые не совместимы с PHP 7.2.
Следующие шаги описывают, как установить PHP 7.2 CentOS 7.
Сначала включите репозиторий PHP 7.2 Remi, выполнив следующую команду:
После того, как хранилище включено, установите PHP 7.2 и несколько наиболее распространенных модулей PHP:
Проверьте установку PHP:
Установка PHP 7.1 на CentOS 7
Следуйте инструкциям ниже, чтобы установить PHP 7.1.
Включите репозиторий PHP 7.1, набрав:
Установите PHP 7.1 и несколько наиболее распространенных модулей PHP:
Чтобы проверить установку, выполните следующую команду, которая выведет версию PHP:
Настройка PHP 7.x для работы с Apache
Если вы используете Apache в качестве веб-сервера, просто перезапустите службу Apache, используя следующую команду, и все готово:
Настройка PHP 7.x для работы с Nginx
В отличие от Apache, Nginx не имеет встроенной поддержки для обработки файлов PHP, поэтому нам нужно установить отдельное приложение, такое как PHP FPM, которое будет обрабатывать файлы PHP.
Для установки пакета PHP FPM выполните следующую команду:
По умолчанию PHP FPM будет работать как пользователь apache на порту 9000. Мы изменим пользователя на nginx и переключимся с сокета TCP на сокет Unix. Для этого отредактируйте линии, выделенные желтым цветом:
Убедитесь, что /var/lib/php каталог имеет правильное владение :
После внесения изменений включите и запустите службу PHP FPM:
Затем отредактируйте директиву виртуального хоста Nginx и добавьте следующий блок местоположения, чтобы Nginx мог обрабатывать файлы PHP:
Чтобы новая конфигурация вступила в силу, перезапустите службу Nginx :
Вывод
Вы узнали, как установить PHP 7 на вашем сервере CentOS и как настроить веб-сервер для обработки файлов PHP.
Как обновить версию PHP до 7.* на сервере CentOS 7?
Необходимо выполнить следующие действия:
Добавьте репозитории Remi и Epel для CentOS 7, выполнив команды:
Удалитe текущую версию PHP c сервера командой:
Удалите или закомментируйте (т.е. поставьте спецсимвол перед нужной строкой, в этом случае — #) подключение текущего модуля PHP для apache.
Для этого в файловом менеджере откройте файл domains.conf на редактирование (путь: /etc/httpd/conf.d/domains.conf) и закомментируйте или удалите строку:
Чтобы она выглядела так:
Либо выполните в консоли команду:
Теперь установите PHP 7.*.
Для установки PHP 7.1 в консоли выполните команду:
Для установки PHP 7.2:
Для установки PHP 7.3:
После завершения установки перезагрузите веб-сервер apache, выполнив команду:
Для проверки версии PHP используйте команду:
Вы получите следующий вывод:
Для проверки PHP для сайта создайте файл phpinfo.php в корне сайта, поместив в него следующий код:
Затем обратитесь в браузере к скрипту: http://example.com/phpinfo.php
Вместо example.com укажите имя вашего домена:
Конфигурационный файл php.ini, в котором можно редактировать параметры PHP, находится по данному пути: /etc/opt/remi/php(номер версии)/php.ini
Рекомендуем сразу включить использование short_open_tag (это необходимо для работы сайта, в коде которого часто используются короткие теги). Для этого откройте конфигурационный файл php.ini для нужной вам версии PHP, найдите параметр short_open_tag и поставьте значение On. После этого сохраните изменения, чтобы строка выглядела так:
В консоли сделать это можно следующим образом:
После редактирования параметров PHP и изменения значений перезагрузите веб-сервер apache командой:
Для установки модуля ionCube Loader для PHP из репозитория Remi выполните следующую команду:
После установки перезагрузите веб-сервер apache командой:
Жонглируем версиями PHP в системе
Проблема “ хочу новую версию %software% на моем стареньк … стабильном Debian/CentOS…” так же стара, как *nix-мир. Способов добиться желаемого хватает. Есть масса решений как притащить в систему несколько версий одного и того же софта. Но дальше хочется не просто иметь ещё одну версию, но и управлять тем, какая из версий доступна в системе по умолчанию, для конкретных приложений или пользователей.
Что делать, если хочется сменить системную версию PHP на одну из кастомных сборок? Давайте отталкиваться от того, что у вас на сервере уже установлено несколько версий PHP и вы хотите, чтобы в консоли команда php была конкретной версии, отличающаяся от той, что шла с системой. В этой статье я расскажу, как правильно это настроить, чтобы не было проблем с будущими пакетными обновлениями.
В качестве примера возьмём сервер на CentOS 7, где установлен родной PHP:
Также на сервере установлен наш Plesk с парой своих сборок PHP:
Допустим, мы хотим переключить систему на использование PHP 5.6 по умолчанию (переключать глобально PHP с версии 5.4 на 7 как-то сс… страшно — чему-то в системе может поплохеть от такого). Бинарь PHP 5.6 лежит у нас тут:
Как же сделать так, чтобы система использовала эту, нужную нам, версию PHP?
Сначала посмотрим на системную переменную PATH
В ней перечислен список директорий, в которых ищутся программы по имени. Главный нюанс — поиск в директориях происходит последовательно и используется первый найденный результат. Текущий путь до текущего бинарника PHP мы можем увидеть с помощью команды:
Теперь, давайте зарегистрируем все доступные версии PHP с помощью этой команды:
Цифры 10, 20 и 30 — это приоритет. Он работает для автоматического выбора, если администратор сам не выбрал конкретную версию. Самое большое число определяет выбор «по умолчанию».
Проверим, что php теперь указывает на созданную командой симлинку:
Давайте разберемся, что же update-alternatives сделала для нас:
Как видно, она создала цепочку симлинок и теперь по требованию просто меняет промежуточную симлинку на нужный нам бинарь.
Давайте переключимся на PHP версии 5.6, которая идет в поставке с Plesk’ом:
Проверяем, что переключение произошло:
Все отлично работает. Теперь в системе используется нужная нам версия PHP и я не опасаюсь, что эта настройка слетит при следующих пакетных обновлениях.
С помощью update-alternatives можно выбирать не только версию PHP, но и многие другие вещи, например разные версии phpunit или редактор по умолчанию в системе. Подход этот универсален для различных систем. Не изобретая своего велосипеда, используя существующие инструменты, вы можете быть уверенным, что не устроили для ваших коллег квеста “Ну почему оно так работает?!”. Настраивайте свою систему правильно.
Обновление PHP 5 до PHP 7 в CentOS 7
Версия PHP 7.0 была выпущена 3 декабря 2015 года. PHP 7 обладает существенно улучшенной скоростью и множеством других новых функций.
Это руководство поможет быстро обновить веб-сервер Apache или Nginx, работающий на любом релизе версии PHP 5.
Внимание! Запускать PHP 7 в производство сразу после обновления не рекомендуется. Сначала нужно проверить приложения на совместимость с новым релизом и ознакомиться с функциями языка.
Если вы используете phpMyAdmin для управления базами данных, настоятельно рекомендуется подождать выхода официальных пакетов PHP 7 для CentOS, поскольку пакеты phpMyAdmin пока что не поддерживают новой версии PHP.
Требования
Для выполнения руководства нужно иметь экземпляр PHP 5.x на сервере CentOS 7 с предустановленным модулем mod_php (для Apache) или PHP-FPM (для Nginx). Также нужна учётная запись не-root с доступом к sudo.
Установить PHP 5 можно при помощи одного из руководств:
Подписка на репозиторий IUS
Поскольку пакеты PHP 7.x еще не появились в официальных репозиториях большинства дистрибутивов, их нужно загрузить из сторонних ресурсов. На данный момент RPM-файлы для PHP 7 предлагают несколько репозиториев, и один из них – репозиторий IUS.
IUS предоставляет установочный скрипт для добавления этого репозитория и импорта необходимых GPG-ключей. Перейдите в домашний каталог и извлеките в него скрипт при помощи curl:
sudo bash setup-ius.sh
Обновление mod_php для Apache
Этот раздел содержит инструкции по обновлению модуля mod_php для поддержки нового кода PHP.
Примечание: Если вы используете веб-сервер Nginx, переходите к следующему разделу.
Сначала удалите старые пакеты PHP:
sudo yum remove php-cli mod_php php-common
Примечание: Чтобы подтвердить запуск команды, нужно нажать y и Enter.
Установите новые пакеты PHP 7 из репозитория IUS:
sudo yum install mod_php70u php70u-cli php70u-mysqlnd
Затем перезапустите Apache, чтобы загрузит новую версию модуля mod_php:
sudo apachectl restart
Проверьте состояние сервера Apache, которым управляет модуль httpd systemd:
systemctl status httpd
Обновление PHP-FPM для Nginx
Этот раздел содержит инструкции по обновлению PHP-FPM для поддержки новой версии PHP.
Сначала нужно удалить устаревшие пакеты PHP:
sudo yum remove php-fpm php-cli php-common
Затем установите новые пакеты из репозитория IUS.
sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd
После завершения установки нужно выполнить начальную настройку модуля PHP-FPM и сервера Nginx. По умолчанию PHP-FPM слушает соединения на локальном сокете TCP, а Nginx для работы нужен сокет домена Unix.
PHP-FPM может обрабатывать множество пулов дочерних процессов. Согласно текущим настройкам, он поддерживает один пул по имени www, который определяется в файле /etc/php-fpm.d/www.conf. Откройте этот файл в текстовом редакторе:
sudo nano /etc/php-fpm.d/www.conf
Найдите в файле строку listen = 127.0.0.1:9000, которая настраивает PHP-FPM для прослушивания адреса замыкания на порте 9000. Закомментируйте эту строку, поставив в начале символ точки с запятой, и раскомментируйте строку listen = /run/php-fpm/www.sock, которая находится немного ниже.
Затем найдите блок, содержащий значения listen.acl_users, и раскомментируйте listen.acl_users = nginx:
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = apache,nginx
;listen.acl_users = apache
listen.acl_users = nginx
;listen.acl_groups =
Сохраните и закройте файл.
Примечание: В редакторе nano для этого используется комбинация клавиш Ctrl-X, y (для сохранения) и Enter (для подтверждения).
Затем нужно установить для Nginx правильный путь сокета для обработки файлов PHP. Откройте /etc/nginx/conf.d/default.conf:
sudo nano /etc/nginx/conf.d/php-fpm.conf
Файл php-fpm.conf определяет данные upstream, на которые могут ссылаться другие конфигурационные директивы Nginx. В блоке upstream закомментируйте строку server 127.0.0.1:9000;, добавив в её начало символ #. Затем раскомментируйте строку server unix:/run/php-fpm/www.sock;:
# PHP-FPM FastCGI server
# network or unix domain socket configuration
upstream php-fpm <
#server 127.0.0.1:9000;
server unix:/run/php-fpm/www.sock;
Сохраните и закройте файл. Откройте /etc/nginx/conf.d/default.conf:
sudo nano /etc/nginx/conf.d/default.conf
Найдите блок, который начинается с location
Сохраните и закройте файл. Перезапустите PHP-FPM и Nginx, чтобы обновить настройки.
sudo systemctl restart php-fpm
sudo systemctl restart nginx
Проверьте состояние этих сервисов:
systemctl status php-fpm
systemctl status nginx
Тестирование PHP
Теперь веб-сервер настроен, все новые пакеты установлены. Нужно убедиться, что обновление прошло успешно.
Запросите версию PHP:
Также можно создать тестовый файл в каталоге document root веб-сервера. В зависимости от используемого сервера и настройки это может быть один из этих каталогов:
Откройте новый файл info.php в каталоге document root при помощи текстового редактора. По умолчанию для Apache это каталог:
sudo nano /var/www/html/info.php
sudo nano /usr/share/nginx/html/info.php
Вставьте в него такой код:
Закройте редактор и сохраните файл. Откройте файл в браузере:
Появившаяся на экране страница указывает версию PHP и предоставляет данные о настройке PHP 7. После проверки рекомендуется удалить файл info.php, так как он содержит конфиденциальные данные.
sudo rm /var/www/html/info.php
Заключение
Теперь на сервере есть готовая к работе установка PHP 7.
За дополнительной информацией обращайтесь к официальному руководству PHP 7.


