web-dev-qa-db-ja.com

PHP 7.3のビルド方法は?

GitからPHP 7.3のパッケージをビルドする際に問題があります。現時点では、Utdatet php 7.0.xでUbuntu 16.04を使用しています。 (ブート時にクラッシュするため、VPSでUbuntu 16.04を18.04にアップグレードすることは不可能です。デバッグするのはVirtuozzoのみであり、クラッシュするポイントが見つからないため、18.04へのアップグレードはまだオプションではありません。)

これまでの手順:

ビルド用のすべてのプログラム(git、build essential、libtool、bison、およびre2c)をインストールしました。

GitHubからgitを複製しました:

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を検索しませんでした。それを行うことで学習するために、自分で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.net/downloads.php からPHP 7.3をダウンロードすることもできます。インストール手順はまったく同じです。通常、これは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
    

    おそらく、PostgreSQLがインストールされていない場合は、--with-pdo-pgsql=/usr/bin/pg_config以外のオプションを削除する必要はありません。インストールされていないパッケージに固有のオプションを削除しない場合、このコマンドは、コマンドを正常に実行するために削除する必要があるオプションを示すエラーメッセージを返します。

  4. バイナリをコンパイルします。

    make # wait until make is finished
    make install
    
  5. PHP.iniファイルをインストールディレクトリにコピーします

    cp php.ini-development ~/bin/php-latest/lib/
    
  6. 2つのファイルの名前を変更します。

    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コマンドにリンクします。デフォルトの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.    
    

ソース: https://github.com/php/php-src.git のphp-src-masterディレクトリにあるインストールファイルには https://php.net/installへのリンクが含まれています これらの指示が改訂されたソース。いくつかの小さな改訂に加えて、PHP 7.3をホームディレクトリにローカルにインストールする方法に関する情報を追加しました。ルート権限は必要ありません。

5
karel