Доброго времени суток читатели и гости моего блога. В данной статье мы рассмотрим установку PHP последней версии из исходников, на момент написания таковой являлась версия 7.1.3. PHP будет работать совместно с веб-сервером Nginx, установка которого описана здесь.

Перед началом сборки нужно установить необходимые утилиты и библиотеки, иначе возникнут ошибки при установке.

Все дальнейшие действия будут происходить внутри определенной директории, по умолчанию для подобных целей я привык использовать каталог /usr/local/src.

Необходимо узнать ссылку на архив со свежей версией PHP, переходим на оф. сайт PHP в раздел закачек, выбираем архив "tar.gz", кликаем по нему для просмотра списка зеркал, выбираем себе ссылку и копируем ее.

При помощи утилиты wget скачиваем архив. После указания ссылки, опцией "" можно указать под каким именем будет сохранен архив.

Распаковываем скачанный архив.

Переходим в каталог с распакованным архивом.

Все дальнейшие действия производятся внутри каталога /usr/local/src/php-7.1.3, в консоли это выглядит так - user@hostname:/usr/local/src/php-7.1.3#

Задаем конфигурацию сборки, добавляем нужное, ненужное убираем. Всю нужную информацию о модулях, расширениях и о том что необходимо для их установки, можно узнать в документации к PHP.

В данной статье я привожу конфигурацию PHP исходя из своих нужд, данную сборку PHP можно назвать минимальной, если не считать блок опций поддержки библиотеки GD. Библиотека нужна для изменения и обработки изображений, а также для работы некоторых плагинов так или иначе связанных с изображениями.

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

Задаем конфигурацию PHP.

Если при конфигурации сервера у вас возникли какие либо ошибки, то это означает, что вы что-то забыли установить из списка необходимых пакетов в начале статьи. Найдите свою ошибку в списке и установите нужные пакеты, после чего выполните команду "./configure…" заново.

Если ошибок не было, а было что-то похожее, то все в порядке, конфигурация прошла успешно.

Переходим к компиляции и установке PHP, запускаем выполнение команды и идем за пивом делать чай, ибо процесс небыстрый.

После того как установка завершится, должно появиться нечто похожее, означающее что все в порядке и установка прошла успешно.

Создадим каталог для конф. файлов, заданный опцией "--with-config-file-path=/etc/php7/conf". Сама опция не создает каталог при установке, она лишь указывает системе где искать php.ini, помимо него, в данном каталоге я привык хранить и другие .conf-файлы. Сборка из исходников хороша тем, что все можно настроить как тебе удобно.

Дополнительно создадим каталог в котором будут лежать файлы php-fpm пулов.

Теперь необходимо задать конф. файлы, точнее, скопировать и переименовать уже готовые.

Из каталога с исходниками копируем файл php.ini.production, в каталог /etc/php7/conf, попутно переименовывая его в php.ini.

Сюда же переносим файл php-fpm.conf.default с попутным переименованием в php-fpm.conf, я привык когда все конфигурационные файлы находятся в одном месте.

Создадим пустую заготовку файла пула test.conf, для будущего сайта.

Переходим к правке конф. файлов. Начнем с php.ini и внесем некоторые изменения. На данном этапе я немного отвлекусь, ибо хочу заметить что все правки сделаны исходя из моих нужд.

Редактируем php-fpm.conf.

Привожу свой конфиг в качестве примера.

Поскольку мы указали /var/log/php-fpm в качестве каталога для log-файлов, то его необходимо создать, в противном случае при запуске демона PHP будет выдаваться ошибка.

Редактируем файл php-fpm пула test.conf.

Привожу свой конфиг в качестве примера.

Создадим несколько ссылок на файлы в каталоге bin.

Теперь необходимо создать системный юнит, который будет управлять запуском PHP. Создадим файл php7.service. Обратите внимание на такую деталь, дальнейшие команды для управления демоном PHP будут зависеть от имени данного файла.

Содержание файла php7.service.

Создаем пользователя nginx, указанного в конфигурационных файлах, конечно если он не был создан ранее при установке Nginx. Если вы еще не ставили Nginx, то пользователя создать все равно нужно, иначе при запуске PHP будет ошибка.

Создадим пользователя nginx, зададим командную оболочку /usr/sbin/nologin, запрещающую удаленный доступ и обозначающую пользователя как системного.

Добавляем службу php7.service в автозагрузку и запускаем ее.

Проверим запустилась ли служба.

Итак, PHP запущен и работает. Можно посмотреть установленную версию командой php -v.

Можно просмотреть более развернутую информацию о версии PHP, командой php -i, команда вызывает так называемую функцию phpinfo.

Вывод php -i под катом

Как видите информации реально много. Сюда входит информация о настройках компиляции, о расширениях, о версии, информация о сервере и окружении PHP, версии ОС, о путях, об основных и локальных значениях настроек конфигурации, о HTTP заголовках и лицензии PHP.

Ответ phpinfo можно вызвать не только командой php -i, но и обращением через браузер к php-файлу в корне сайта, в котором данная функция прописана. Для наглядности я создал файл php.php, прописал в нем вызов данной функции и поместил его в корневой каталог моего сайта.

Содержание файла php.php

После чего обратился к файлу через браузер, по такому адресу - https://techlist.top/php.php, на что получил вот такой ответ.

php phpinfo ubuntu

Данная функция используется для отладки, но также является отличным информатором для разного рода злоумышленников, поэтому вывод phpinfo лучше отключить. Чтобы отключить phpinfo, нужно подправить файл php.ini

Добавьте функцию phpinfo в строку disable_functions.

После чего перезапустите службу PHP.

Теперь при обращении к файлу через браузер, в ответ будет выдаваться просто белый экран. Но через консоль и команду php -i все будет работать.

Вот так устанавливается седьмая версия PHP на Ubuntu Server 16.04 LTS.