OS: Ubuntu Server 16.04
Nginx 1.12.2
PHP 7.2.3
Nginxが稼働する環境へPHPをインストールするとなればNginx 1.4.x on Unix systemsの手続きを参照するのは無理からぬ事である。公式であるから全幅の信頼を寄せて盲目的に従うのもやはり無理からぬ事である。これが裏目に出た。第四番目の手続きである。
4. Obtain and move configuration files to their correct locations
cp php.ini-development /usr/local/php/php.ini
php.iniを/usr/local/php/へと配したのちに、OPcacheを有効にすべくphp.iniへ必要な記述をこなしてphp -vを実行するとこうである。
$ php -v PHP 7.2.3 (cli) (built: Mar 17 2018 01:31:01) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
「with Zend OPcache v7.2.3, Copyright (c) 1999-2018, by Zend Technologies」が出力に表れないのでOPcacheが有効になっていない模様である。テストスクリプトの実行結果も「PHP Fatal error: Uncaught Error: Call to undefined function opcache_get_status()」とあるからまったく狼狽した。いくらインターネットのページを繰っても似たような状況に遭遇した人が見当たらないのでどうやら世界ではじめて犯したヘマである。情けない。さんざ調べた末、結局はphp.iniの設置場所が良くないようで/usr/local/libへと移動させることで解決を見た。
$ sudo mv /usr/local/php/php.ini /usr/local/lib/ $ php -v PHP 7.2.3 (cli) (built: Mar 17 2018 01:31:01) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.3, Copyright (c) 1999-2018, by Zend Technologies
configureのヘルプからも特別に指定しなければ/usr/local/libにphp.iniを求めにゆくことが明らかである。
$ ./configure --help (snip) --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --with-config-file-path=PATH Set the path in which to look for php.ini [PREFIX/lib]
またphp -iの実行結果から現在の設定を確かめることができるから、php.iniの設定が反映されずどうも様子がおかしいと感ずるときは確認をするのが良さそうである。
$ php -i | grep php.ini Configuration File (php.ini) Path => /usr/local/lib Loaded Configuration File => /usr/local/lib/php.ini
参考:
Nginx 1.4.x on Unix systems