- Вопрос или проблема
- Ответ или решение
- Как собрать PHP 7.3 на Ubuntu 16.04
- Подготовка окружения
- Клонирование и подготовка исходного кода
- Конфигурация сборки PHP
- Сборка PHP
- Настройка конфигурации
- Предварительная настройка PHP-FPM
- Создание символических ссылок
- Обновление переменных окружения
- Запуск PHP-FPM
- Заключение
Вопрос или проблема
У меня есть проблема с созданием пакета для PHP 7.3 из git. На данный момент я использую Ubuntu 16.04 с установленным php 7.0.x. (Невозможно обновить Ubuntu 16.04 до 18.04 на моем VPS, так как он зависает при загрузке. У меня есть только Virtuozzo для отладки, и я не могу найти место, где он зависает, поэтому обновление до 18.04 пока не вариант.)
Мои шаги до сих пор:
Я установил все программы для сборки (git, build essential, libtool, bison и re2c).
Я клонировал git из GitHub с помощью:
git clone https://github.com/php/php-src.git
Затем я выбрал нужную ветку:
git checkout PHP-7.3
Затем я запустил:
./buildconf
Какой следующий шаг?
Мне нужны следующие пакеты:
php7.3
libapache2-mod-php7.3
php7.3-mysql
mysql-server
Я не искал PPA, потому что хотел сделать это самостоятельно, чтобы научиться на практике.
-
Установите зависимости.
Ubuntu 24.04-24.10 (в 25.04 обновите с libzip4t64 на libzip5):
sudo apt install autoconf automake bison build-essential curl flex \ libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline8t64 \ libreadline-dev libsqlite3-dev libzip-dev libzip4t64 nginx openssl \ pkg-config re2c sqlite3 zlib1g-dev libonig5 libonig-dev
Ubuntu 22.04-23.04:
sudo apt install autoconf automake bison build-essential curl flex \ libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline8 \ libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \ pkg-config re2c sqlite3 zlib1g-dev libonig5 libonig-dev
Ubuntu 20.04:
sudo apt install autoconf automake bison build-essential curl flex \ libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline8 \ libreadline-dev libsqlite3-dev libzip-dev libzip5 nginx openssl \ pkg-config re2c sqlite3 zlib1g-dev libonig5 libonig-dev
Ubuntu 18.04:
sudo apt install autoconf automake bison build-essential curl flex \ libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \ libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \ pkg-config re2c sqlite3 zlib1g-dev libonig4 libonig-dev
Ubuntu 16.04:
sudo apt install autoconf automake bison build-essential curl flex \ libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \ libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \ pkg-config re2c sqlite3 zlib1g-dev libonig2 libonig-dev
Чтобы не перезаписать любые установленные PHP в вашей системе, установите PHP в вашей домашней директории. Создайте директорию для бинарных файлов PHP.
mkdir -p ~/bin/php7-latest/
-
Загрузите PHP 7.3 с GitHub, распакуйте его, затем смените директорию с помощью
cd
на новую директорию. Вы также можете загрузить другие версии PHP с GitHub, изменив https://github.com/php/php-src/tree/PHP-7.3 на https://github.com/php/php-src/tree/PHP-X.X. Вы также можете загрузить PHP 7.3 с php.net/downloads.php, и инструкции по установке будут точно такими же. Обычно это предпочтительный способ загрузки PHP 7.3, но в этом ответе я использую PHP 7.3 из https://github.com/php/, чтобы соответствовать архиву PHP 7.3, о котором идет речь в вопросе. -
Настройте PHP. Удалите любые опции, которые вам не нужны (например, MySQL или Postgres (–with-pdo-pgsql))
./configure --prefix=$HOME/bin/php-latest \ --enable-mysqlnd \ --with-pdo-mysql \ --with-pdo-mysql=mysqlnd \ --with-pdo-pgsql=/usr/bin/pg_config \ --enable-bcmath \ --enable-fpm \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ --enable-mbstring \ --enable-phpdbg \ --enable-shmop \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-zip \ --with-libzip=/usr/lib/x86_64-linux-gnu \ --with-zlib \ --with-curl \ --with-pear \ --with-openssl \ --enable-pcntl \ --with-readline
Вероятно, вам не нужно будет удалять какие-либо опции, кроме
--with-pdo-pgsql=/usr/bin/pg_config
, если PostgreSQL не установлен. Если вы не удалите опцию, которая специфична для пакета, который не установлен, эта команда вернет сообщение об ошибке, которое скажет вам, какую опцию необходимо удалить для успешного выполнения команды. -
Скомпилируйте бинарные файлы:
make # дождитесь завершения make
Когда make завершится, вы увидите следующее сообщение:
Сборка завершена. Не забудьте выполнить 'make test'.
Предупреждение:
make test
занимает много времени, поэтому не запускайте его, когда компьютер занят.make install
-
Скопируйте файл PHP.ini в каталог установки
cp php.ini-development ~/bin/php-latest/lib/
-
Переименуйте два файла.
cd ~/bin/php-latest/etc/ mv php-fpm.conf.default php-fpm.conf mv php-fpm.d/www.conf.default php-fpm.d/www.conf
-
Создайте символические ссылки для вашего бинарного файла.
cd ~/bin ln -s php-latest/bin/php php ln -s php-latest/bin/php-cgi php-cgi ln -s php-latest/bin/php-config php-config ln -s php-latest/bin/phpize phpize ln -s php-latest/bin/phar.phar phar ln -s php-latest/bin/pear pear ln -s php-latest/bin/phpdbg phpdbg ln -s php-latest/sbin/php-fpm php-fpm
-
Свяжите вашу локальную версию PHP с командой php. Вам нужно будет выйти и снова войти, чтобы php переключился на локальную версию вместо установленной версии из стандартных репозиториев Ubuntu.
# добавьте это в .bashrc if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
-
Запустите PHP-FPM
sudo ~/bin/php-latest/sbin/php-fpm
Если вы запустите вышеуказанную команду под обычным пользователем без sudo, вам будут показаны следующие уведомления:
УВЕДОМЛЕНИЕ: [pool www] директива 'user' игнорируется, когда FPM не запущен от имени root. УВЕДОМЛЕНИЕ: [pool www] директива 'group' игнорируется, когда FPM не запущен от имени root.
Источник: Файл установки в директории php-src-master из https://github.com/php/php-src.git содержит ссылку на https://php.net/install, откуда были пересмотрены эти инструкции. В дополнение ко многим небольшим изменениям я добавил информацию о том, как установить PHP 7.3 локально в вашей домашней директории без необходимости получать права root.
Ответ или решение
Как собрать PHP 7.3 на Ubuntu 16.04
Сборка PHP 7.3 из исходного кода на Ubuntu 16.04 может показаться сложной задачей, но я шаг за шагом проведу вас через процесс, чтобы вы могли легко справиться с этой задачей.
Подготовка окружения
Перед тем как приступить к сборке PHP 7.3, необходимо установить все необходимые зависимости. Выполните следующие команды в терминале:
sudo apt update
sudo apt install autoconf automake bison build-essential curl flex \
libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline-dev \
libsqlite3-dev libzip-dev zlib1g-dev libonig-dev
Эти пакеты обеспечат вам все необходимые инструменты для сборки PHP.
Клонирование и подготовка исходного кода
Теперь, когда все зависимости установлены, следует загрузить исходный код PHP 7.3. Используйте Git для клонирования репозитория:
git clone https://github.com/php/php-src.git
cd php-src
git checkout PHP-7.3
После того как вы переключитесь на нужную ветку, необходимо подготовить конфигурацию для сборки:
./buildconf
Конфигурация сборки PHP
Перед сборкой PHP 7.3 вам нужно настроить параметры конфигурации. Выполните команду следующего вида:
./configure --prefix=$HOME/bin/php7.3 \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-bcmath \
--enable-fpm \
--enable-mbstring \
--with-zlib \
--with-curl \
--with-openssl
В данном случае мы используем каталог ~/bin/php7.3
для установки PHP, чтобы это не затрагивало существующие установки на вашем VPS.
Сборка PHP
После успешной конфигурации выполните компиляцию, запустив команду:
make
Этот шаг может занять некоторое время. После завершения обратите внимание на сообщение о том, что сборка завершена. Чтобы установить PHP, выполните:
make install
Настройка конфигурации
Если сборка прошла успешно, вам нужно будет настроить файл php.ini
. Скопируйте его в установленный каталог:
cp php.ini-development ~/bin/php7.3/lib/php.ini
Предварительная настройка PHP-FPM
Для PHP-FPM вам нужно изменить некоторые конфигурационные файлы. Переходите в каталог с конфигурацией:
cd ~/bin/php7.3/etc/
mv php-fpm.conf.default php-fpm.conf
mv php-fpm.d/www.conf.default php-fpm.d/www.conf
Создание символических ссылок
Чтобы упростить доступ к новым бинарным файлам, создайте символические ссылки:
cd ~/bin
ln -s php7.3/bin/php php
ln -s php7.3/bin/php-cgi php-cgi
ln -s php7.3/bin/php-config php-config
ln -s php7.3/bin/phpize phpize
ln -s php7.3/bin/phar.phar phar
ln -s php7.3/bin/pear pear
ln -s php7.3/sbin/php-fpm php-fpm
Обновление переменных окружения
Для того чтобы использовать новую версию PHP по умолчанию, добавьте следующую строку в ваш файл .bashrc
:
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
После этого выполните команду:
source ~/.bashrc
Запуск PHP-FPM
Теперь вы можете запустить PHP-FPM с помощью команды:
~/bin/php7.3/sbin/php-fpm
Если выполнение пройдет успешно, то вы увидите, что PHP-FPM запущен.
Заключение
Теперь у вас установлена и работает версия PHP 7.3 на Ubuntu 16.04 в вашем личном каталоге, что позволяет избежать конфликтов с системными установками. Данная сборка предоставляет вам возможность работать с новейшими функциями PHP 7.3. Не забывайте периодически проверять обновления и поддерживать ваш код в актуальном состоянии. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью в специализированные сообщества.