Как собрать PHP 7.3?

Вопрос или проблема

У меня есть проблема с созданием пакета для 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, потому что хотел сделать это самостоятельно, чтобы научиться на практике.

  1. Установите зависимости.

    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/
    
  2. Загрузите 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, о котором идет речь в вопросе.

  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 не установлен. Если вы не удалите опцию, которая специфична для пакета, который не установлен, эта команда вернет сообщение об ошибке, которое скажет вам, какую опцию необходимо удалить для успешного выполнения команды.

  4. Скомпилируйте бинарные файлы:

    make # дождитесь завершения make
    

    Когда make завершится, вы увидите следующее сообщение:

    Сборка завершена.
    Не забудьте выполнить 'make test'.
    

    Предупреждение: make test занимает много времени, поэтому не запускайте его, когда компьютер занят.

    make install
    
  5. Скопируйте файл PHP.ini в каталог установки

    cp php.ini-development ~/bin/php-latest/lib/
    
  6. Переименуйте два файла.

    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
    
  7. Создайте символические ссылки для вашего бинарного файла.

    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
    
  8. Свяжите вашу локальную версию PHP с командой php. Вам нужно будет выйти и снова войти, чтобы php переключился на локальную версию вместо установленной версии из стандартных репозиториев Ubuntu.

    # добавьте это в .bashrc
    if [ -d "$HOME/bin" ] ; then
      PATH="$HOME/bin:$PATH"
    fi
    
  9. Запустите 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. Не забывайте периодически проверять обновления и поддерживать ваш код в актуальном состоянии. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью в специализированные сообщества.

Оцените материал
Добавить комментарий

Капча загружается...