it-swarm.com.ru

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

У меня проблема со сборкой пакета для PHP 7.3 из git. На данный момент я использую Ubuntu 16.04 с utdatet 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-мод-php7.3
Php7.3-MySQL
MySQL-сервер

Я не искал PPA, потому что хотел сделать это самостоятельно, чтобы учиться на этом.

3
roket
  1. Установить зависимости.

    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
    

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

    mkdir -p ~/bin/php7-latest/
    
  2. Загрузите PHP 7.3 из GitHub , распакуйте его, затем измените каталоги, используя cd, в новый каталог. Вы также можете загрузить 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 # wait until make is finished
    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 по умолчанию.

    # add this to .bashrc
    if [ -d "$HOME/bin" ] ; then
      PATH="$HOME/bin:$PATH"
    fi
    
  9. Запустить PHP-FPM

    Sudo ~/bin/php-latest/sbin/php-fpm  
    

    Если вы запустите указанную команду как обычный пользователь без Sudo, она покажет следующие уведомления:

    NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root.    
    NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root.    
    

Источник: Файл установки в каталоге php-src-master из https://github.com/php/php-src.git содержит ссылку на https://php.net/install из какого источника эти инструкции были пересмотрены. В дополнение к нескольким небольшим ревизиям я добавил информацию о том, как установить PHP 7.3 локально в вашем домашнем каталоге, не требуя прав суперпользователя.

5
karel