ubuntu LTS 16.04コンパイルインストールPHP

5336 ワード

ubuntu LTS 16.04はphp 7以上のバージョンしかインストールできません.ここでインストールされている具体的なバージョンはphp 7です.1.10
依存ライブラリのインストール
依存ライブラリのインストール
sudo apt-get update
sudo apt-get install libxml2-dev
sudo apt-get install build-essential
sudo apt-get install openssl
sudo apt-get install libssl-dev 
sudo apt-get install make
sudo apt-get install curl
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libpng-dev
sudo apt-get install libtool-bin
sudo apt-get install bison
sudo apt-get install php7.0-dev
sudo apt-get install php-fpm

コンパイルインストールlibiconv
libiconv公式サイトで圧縮パッケージをダウンロードして、/usr/local/srcの下に置いて、解凍して、コンパイルしてインストールして、ここでダウンロードしたのはlibiconv-1.15.tar.gzです
sudo tar zxvf libiconv-1.15.tar.gz
cd libiconv-1.15
sudo ./configure --prefix=/usr/local
sudo make
sudo make install
sudo ldconfig //          

ここでは、libiconvをシステムのデフォルトのlibディレクトリにインストールします.インストールパス/usr/localは勝手に変更してはいけません.そうしないと、コンパイルエラーが発生します.また、sudo makeを実行すると次のwarningがあります.
warning: remember too run 'libtool --finish /usr/local/lib'

warningのヒントに従って実行します
libtool --finish /usr/local/lib

コンパイルインストールPHP
PHPコンパイル
PHP公式サイトに行ってphp7.1.10圧縮パッケージをダウンロードして/usr/local/srcの下に置いて、解凍して、コンパイルしてインストールして、ここでダウンロードしたのはphp-7.1.10.tar.gzです
sudo tar zxvf php-7.1.10.tar.gz
cd php-7.1.10
sudo ./configure --prefix=/usr/local/php-7.1.10 --with-config-file-path=/usr/local/php-7.1.10/conf  --with-apxs2=/usr/local/apache2/bin/apxs --with-iconv-dir=/usr/local/lib --enable-fpm --enable-mysqlnd --with-mysqli=mysqlnd --without-pear --disable-phar
sudo make ZEND_EXTRA_LIBS='-liconv'
sudo make install

注意、ここで--with-apxs2の経路はapache 2のインストール経路と一致し、--with-iconv-dirの経路はlibiconvのインストール経路と一致し、pearはphpのコンポーネントであり、専用のインストールが必要である.php 5以降、pearは役に立たないため、ここでpearは無効になっている.fpmはPHPをサポートする比較的良いツールであり、php-fpmパラメータは以下の通りである.
--start   
--stop     
--quit     
--restart   
--reload       php php.ini
--logrotate     log  

また、PHP 7.0 mysqlndを有効にしてMySQL接続をサポートします.オプションはmysqlipdo-mysqlで、パラメータで構成できます.
--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd

インストールが完了するとwarning
warning: remember to run 'libtool --finish /usr/local/src/php-7.1.10/libs'

warningのヒントに従って実行します
libtool --finish /usr/local/src/php-7.1.10/libs

完了すると、/usr/local/apache2/modulesの下にlibphp7.soが生成する、これがApacheのphp動的リンクライブラリである.
PHP7.0以降、デフォルトのphp.iniプロファイルは提供されず、ソースディレクトリの下にphp.ini-developmentphp.ini-productionの2つのプロファイルが提供されます.1つは開発環境、1つはオンライン環境です.ここではphp.ini-productionを以前のphpプロファイルディレクトリの下にコピーし、phpのプロファイルとして使用します.
 sudo cp /usr/local/src/php-7.1.10/php.ini-production /usr/local/php-7.1.10/conf/php.ini

次に、Apache PHP&Apache mysqli を構成します.
Apache解析PHPの設定
Apacheのプライマリプロファイル/usr/local/apache2/conf/httpd.confを開き、次のプロファイル行に書き込みます.
//        php   ,           ,    ,      
//   Apache  php     
LoadModule php7_module modules/libphp7.so

//   Apache  php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Apacheのmysqli拡張の構成php.iniに次の構成を追加
extension=/usr/local/php-7.1.10/lib/php/extensions/no-debug-zts-20151012/mysqli.so

mysql-serverの構成ディレクトリの下で、プライマリプロファイルmy.cnfからプロファイルを巡り、mysqld.sockのパスを見つけます.ここではapt-getでインストールされているmysql-server-5.7なので、mysqld.sockパスは/var/run/mysqld/mysqld.sockで、このパスをphp.iniに書く必要があります.見つけたdefault_ソケット、書き込み構成
mysqli.default_socket = /var/run/mysqld/mysqld.sock

Apacheを再起動し、phpページを追加し、echo phpinfo()でApacheがphpを正常に解析できるかどうか、phpのプロファイルが正常にロードされているかどうか、mysqliがサポートされているかどうか、mysqliが見つかるかどうかを確認します.default_socketが構成されているかどうか.
PHPをコンパイルインストールするmysqli拡張子(これを例にPHP拡張子のコンパイルインストール方法を説明します)
PHPのすべての拡張子はディレクトリ/usr/local/php-7.1.10/lib/php/extensions/no-debug-zts-20151012/の下に置かれています.このディレクトリの下にapacheの拡張子が見えます.今、mysqli拡張子をコンパイルします.
phpソースディレクトリの下にあるextフォルダに移動すると、このphpバージョンでサポートされているすべての拡張子が表示され、mysqliフォルダが表示されるはずです.mysqliに移動し、phpizeを実行します.
/usr/local/src/php-7.1.10/ext/mysqli$ /usr/local/php-7.1.10/bin/phpize

以下の情報が得られます
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012

ディレクトリの下にconfigureなどのファイルが生成され、実行されます.
sudo ./configure --with-php-config=/usr/local/php-7.1.10/bin/php-config --with-mysqli
sudo make
sudo make install

ここで、--with-php-configはapacheプロファイルが存在するパスではなく、bin/php-configに設定する必要があります.インストールが完了すると、extensionsが存在するパスがプロンプトされます.このパスの下に移動すると、mysqli.so、すなわちmysqli拡張が表示されます.(他のPHPをコンパイルしてインストールするのも同じです).