Данный учебник расскажет, как собрать PHP7.0/PHP7.1 на Arch Linux и установить его параллельно с PHP7.2. Arch Linux — это дистрибутив с непрерывным обновлением, который предоставляет самое современное программное обеспечение. В репозитории Arch Linux доступна версия PHP7.2. Некоторые веб-приложения, такие как WordPress, отлично функционируют с PHP7.2, однако другие, например NextCloud, в данный момент не поддерживают эту версию. Ожидается, что NextCloud 13 будет совместим с PHP7.2.
Вчера я обновил свой сервер на Arch Linux, и в процессе PHP7.2 заменил старую версию PHP7.1, что привело к неработоспособности моего веб-интерфейса NextCloud. В AUR доступна версия PHP7.0, и я решил установить её через Yaourt, но возникла ошибка с проверкой подписи. В итоге мне пришлось самостоятельно скомпилировать PHP7.0 или PHP7.1.
Содержание статьи
Как собрать PHP7.0/PHP7.1 на Arch Linux
Сначала выполните обновление всего программного обеспечения.
sudo pacman - Syu
Скачайте и установите wget, затем загрузите исходники PHP. Я использую последнюю версию PHP 7.0. Вы можете заменить номер версии на тот, который вам нужен.
sudo pacman - S wget wget http://php.net/distributions/php-7.0.26.tar.gz
Распакуйте архив.
tar xvf php-7.0.26.tar.gz
Откройте вновь созданную папку.
cd php-7.0.26
Установите необходимые инструменты для сборки и все зависимые компоненты.
sudo pacman - S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt
Настройте среду, используя указанные параметры. Скопируйте команду целиком и вставьте её в терминал.
./configure \ --prefix=/opt/php-7.0.26—с параметром конфигурационного файла=/opt/php-7.0.26/etc \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --enable-exif \ --enable-bcmath \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-pdo-mysql \ --with-mysqli \ --with-mysql-sock=/var/run/mysqld/mysqld. sock \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=http \ --with-fpm-group=http \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-xmlrpc \ --with-xsl \ --enable-opcache \ --enable-fpm
Когда все подготовлено, приступим к компиляции PHP7 с помощью команды make. Замените цифру 2 на количество ядер вашего процессора. По умолчанию make использует одно ядро, но вы можете ускорить процесс компиляции, задействовав все доступные ядра.
make - j2
Время компиляции может варьироваться в зависимости от производительности вашего процессора. После того как процесс завершится, выполните тест.
make test
Теперь необходимо установить PHP. Путь для установки — /opt/php-7.0.26/.
sudo make install

На изображении видно, что бинарный файл PHP-FPM размещен в каталоге /opt/php-7.0.26/sbin/, а конфигурационные файлы PHP-FPM находятся в /opt/php-7.0.26/etc/. Перед тем как запускать PHP-FPM, необходимо создать конфигурационный файл. У нас есть два образца конфигураций, поэтому мы можем просто скопировать их.
sudo cp /opt/php-7.0.26/opt/php-php-fpm.conf.default /etc/php-7.0.26/etc/php-fpm.conf выполните команду sudo cp /opt/php-7.0.26/etc/php-fpm.d/www.conf.default /opt/php-7.0.26/etc/php-fpm.d/www.conf
Измените настройки в файле www.conf.
sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf
По умолчанию PHP-FPM принимает запросы через TCP сокет по адресу 127.0.0.1:9000, однако мы можем настроить его для работы с Unix сокетом. Найдите следующую строку.
listen = 127.0.0.1:9000
В начале добавьте точку с запятой, чтобы сделать её комментарием. После этого добавьте новую строку ниже.
listen = /run/php-fpm/php7.0-fpm.sock
Затем отыщите три последующие строки и уберите символы комментария.
;listen. owner = http ;listen. group = http ;listen. mode = 0660
Сохраните изменения и закройте файл. Затем сделайте копию файла php. ini.
sudo cp ~/php-7.0.26/opt/php-php. ini-продакшн7.0.26/etc/php. ini
sudo nano /opt/php-7.0.26/etc/php. ini
Включите следующее в нижнюю часть файла.
include_path color: #ff0000;">7.0.26/lib/php"
Сохраните изменения и закройте файл. Теперь мы можем запустить PHP-FPM с помощью следующей команды:
sudo /opt/php-7.0.26/sbin/php-fpm
Разработка юнита для службы Systemd.
Разработайте юнит-файл Systemd для PHP7.0.
sudo nano /etc/systemd/system/php7.0-fpm.service
Скопируйте данные строки и поместите их в файл.
[Unit] Description=Управляющий процесс PHP FastCGI After=network. target [Service] Type=simple PIDFile=/run/php-fpm/php7.0-fpm.pid ExecStart=/opt/php-7.0.26/sbin/php-fpm --недемонстрация --конфигурация-fpm /опт/php-7.0.26/etc/php-fpm.conf ExecReload=/bin/kill - USR2 $MAINPID [Install] WantedBy=multi-user. target
Сохраните изменения и закройте файл. Теперь мы можем остановить текущую версию PHP7.0-FPM и перезапустить её с помощью systemd. Определите PID основного процесса PHP7.0-FPM.
ps aux | grep php-fpm

PID на моем компьютере составляет 5066. Следовательно, я могу завершить его с помощью:
sudo kill 5066
Имейте в виду, что бинарный файл PHP7.2-FPM часто обозначается как php-fpm.При использовании команды pkill php-fpm будут остановлены как PHP7.2-FPM, так и PHP7.0-fpm.Теперь запустите php7.0-fpm с помощью systemd.
sudo systemctl start php7.0-fpm
Активируйте автоматический запуск при старте системы.
sudo systemctl enable php7.0-fpm
Убедитесь в его статусе.
systemctl status php-fpm

Конфигурация Nginx для работы с PHP7.0-FPM
Для того чтобы изменить настройку Nginx и использовать PHP7.0 вместо PHP7.2, необходимо открыть файл конфигурации блока сервера Nginx и отыскать следующую строку.
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
Вероятно, есть несколько копий этой строки. Вам следует внести изменения во все из них. После этого назначьте пользователя http (веб-сервер в Arch Linux) владельцем файла /run/php-fpm/php7.0-fpm.sock.
sudo chown http:http /run/php-fpm/php7.0-fpm.sock
Убедитесь в правильности настроек Nginx.
sudo nginx - t
После успешного тестирования перезапустите Nginx, чтобы изменения начали действовать.
sudo systemctl reload nginx
Вот и завершили! Надеюсь, этот гид оказался вам полезен для компиляции PHP 7.0/7.1 из исходников на Arch Linux. Если вам понравилась эта информация, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше полезных советов и рекомендаций.

