ubuntu LTS 16.04コンパイルインストールPHP
5336 ワード
ubuntu LTS 16.04はphp 7以上のバージョンしかインストールできません.ここでインストールされている具体的なバージョンはphp 7です.1.10
依存ライブラリのインストール
依存ライブラリのインストール
コンパイルインストールlibiconv
libiconv公式サイトで圧縮パッケージをダウンロードして、
ここでは、
warningのヒントに従って実行します
コンパイルインストールPHP
PHPコンパイル
PHP公式サイトに行って
注意、ここで
また、PHP 7.0 mysqlndを有効にしてMySQL接続をサポートします.オプションは
インストールが完了するとwarning
warningのヒントに従って実行します
完了すると、
PHP7.0以降、デフォルトの
次に、
Apache解析PHPの設定
Apacheのプライマリプロファイル
Apacheのmysqli拡張の構成
mysql-serverの構成ディレクトリの下で、プライマリプロファイル
Apacheを再起動し、phpページを追加し、
PHPをコンパイルインストールするmysqli拡張子(これを例にPHP拡張子のコンパイルインストール方法を説明します)
PHPのすべての拡張子はディレクトリ
phpソースディレクトリの下にある
以下の情報が得られます
ディレクトリの下にconfigureなどのファイルが生成され、実行されます.
ここで、
依存ライブラリのインストール
依存ライブラリのインストール
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接続をサポートします.オプションは
mysqli
とpdo-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-development
とphp.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をコンパイルしてインストールするのも同じです).