Как перейти на PHP 7 на CentOS 7

Вступление

PHP 7, выпущенный 3 декабря 2015 года, обещает существенное улучшение скорости по сравнению с предыдущими версиями языка, а также новые функции, такие как подсказки скалярного типа. В этом руководстве объясняется, как быстро обновить веб-сервер Apache или Nginx, работающий на PHP 5.x (любой выпуск), до PHP 7, используя пакеты, предоставляемые сообществом.

Если вы установили phpMyAdmin для управления базами данных, настоятельно рекомендуется дождаться официальных пакетов CentOS PHP 7 перед обновлением, поскольку пакеты phpMyAdmin пока не поддерживают обновление. Если вы используете какие-либо другие сервисы или приложения с активными пользователями, лучше всего сначала протестировать этот процесс в промежуточной среде.

Предпосылки

В этом руководстве предполагается, что вы используете PHP 5.x в CentOS 7, используя либо + mod_php + в сочетании с Apache, либо PHP-FPM в сочетании с Nginx. Также предполагается, что у вас есть пользователь без полномочий root, настроенный с привилегиями + sudo + для административных задач.

Процесс установки PHP 5 описан в следующих руководствах:

Подписка на репозиторий проектов сообщества IUS

Поскольку PHP 7.x еще не упакован в официальные репозитории для основных дистрибутивов, нам придется полагаться на сторонний источник. Несколько репозиториев предлагают файлы PHP 7 RPM. Мы будем использовать https://ius.io [хранилище IUS].

IUS предлагает установочный скрипт для подписки на свой репозиторий и импорта связанных ключей GPG. Убедитесь, что вы находитесь в своем домашнем каталоге, и получите скрипт, используя + curl +:

cd ~
curl 'https://setup.ius.io/' -o setup-ius.sh

Запустите скрипт:

sudo bash setup-ius.sh

Обновление + mod_php + с помощью Apache

В этом разделе описывается процесс обновления для системы, использующей Apache в качестве веб-сервера и + mod_php + для выполнения кода PHP. Если вместо этого вы используете Nginx и PHP-FPM, перейдите к следующему разделу.

Начните с удаления существующих пакетов PHP. Нажмите * y * и нажмите * Enter *, чтобы продолжить при появлении запроса.

sudo yum remove php-cli mod_php php-common

Установите новые пакеты PHP 7 от IUS. Снова нажмите * y * и * Enter * при появлении запроса.

sudo yum install mod_php70u php70u-cli php70u-mysqlnd

Наконец, перезапустите Apache, чтобы загрузить новую версию + mod_php +:

sudo apachectl restart

Вы можете проверить состояние Apache, который управляется модулем + httpd + + systemd +, используя + systemctl +:

systemctl status httpd

Обновление PHP-FPM с помощью Nginx

В этом разделе описывается процесс обновления системы, использующей Nginx в качестве веб-сервера и PHP-FPM для выполнения кода PHP. Если вы уже обновили систему на основе Apache, перейдите к разделу «Тестирование PHP».

Начните с удаления существующих пакетов PHP. Нажмите * y * и нажмите * Enter *, чтобы продолжить при появлении запроса.

sudo yum remove php-fpm php-cli php-common

Установите новые пакеты PHP 7 от IUS. Снова нажмите * y * и * Enter * при появлении запроса.

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 +. Откройте этот файл с помощью + nano + (или предпочитаемого вами текстового редактора):

sudo nano /etc/php-fpm.d/www.conf

Найдите блок, содержащий + listen = 127.0.0.1: 9000 +, который сообщает PHP-FPM прослушивать адрес обратной связи на порту 9000. Прокомментируйте эту строку точкой с запятой и раскомментируйте + listen = / run / php-fpm / www.sock + несколькими строками ниже.

/etc/php-fpm.d/www.conf

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
; WARNING: If you switch to a unix socket, you have to grant your webserver user
;          access to that socket by setting listen.acl_users to the webserver user.

Затем найдите блок, содержащий значения + listen.acl_users + и раскомментируйте + listen.acl_users = nginx +:

/etc/php-fpm.d/www.conf

; 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_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. Внутри вышестоящего блока используйте + # + для комментирования + сервер 127.0.0.1: 9000; + и раскомментируйте + серверный unix: /run/php-fpm/www.sock; +:

/etc/nginx/conf.d/php-fpm.conf

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
       server 127.0.0.1:9000;

}

Выйдите и сохраните файл, затем откройте + / etc / nginx / conf.d / default.conf +:

sudo nano /etc/nginx/conf.d/default.conf

Найдите блок, начинающийся с + location ~ \ .php $ {+. В этом блоке ищите директиву + fastcgi_pass +. Закомментируйте или удалите эту строку и замените ее на + fastcgi_pass php-fpm +, которая будет ссылаться на восходящий поток, определенный в + php-fpm.conf +:

/etc/nginx/conf.d/default.conf

 location ~ \.php$ {
     try_files $uri =404;
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     fastcgi_pass php-fpm;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
 }

Выйдите и сохраните файл, затем перезапустите PHP-FPM и Nginx, чтобы новые директивы конфигурации вступили в силу:

sudo systemctl restart php-fpm
sudo systemctl restart nginx

Вы можете проверить состояние каждого сервиса, используя + systemctl +:

systemctl status php-fpm
systemctl status nginx

Тестирование PHP

С настроенным веб-сервером и установленными новыми пакетами мы сможем убедиться, что PHP работает и работает. Начните с проверки установленной версии PHP в командной строке:

php -v

Выход

PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

Вы также можете создать тестовый файл в корневом каталоге документов веб-сервера. Хотя его расположение зависит от конфигурации вашего сервера, корень документа обычно устанавливается в один из следующих каталогов:

  • + / Вар / WWW / html

  • + / Вар / WWW / +

  • + / USR / доли / Nginx / html

Используя + nano +, откройте новый файл с именем + info.php + в корне документа. По умолчанию на Apache это будет:

sudo nano /var/www/html/info.php

На Nginx вы могли бы вместо этого использовать:

sudo nano /usr/share/nginx/html/info.php

Вставьте следующий код:

info.php

<?php
phpinfo();

Выйдите из редактора, сохранив + info.php. Теперь загрузите следующий адрес в вашем браузере:

http:///info.php

Вы должны увидеть информационную страницу PHP 7, в которой перечислены работающая версия и конфигурация. После того, как вы дважды проверите это, безопаснее всего удалить + info.php:

sudo rm /var/www/html/info.php

Теперь у вас есть работающая установка PHP 7. Отсюда вы можете почитать сообщение в блоге Эрики Хайди Getting Ready for PHP 7 и просмотреть https : //secure.php.net/manual/en/migration70.php [официальное руководство по миграции].

Related