AmazonLinuxでPHP-FPM7.1を動作させたときの設定ファイルが謎すぎるのでまとめた

  • このエントリーをはてなブックマークに追加

環境

AmazonLinuxに検証なのでとりあえず入るモジュールを全部入れています。

# yum install php71-fpm php71-opcache php71-pecl-apcu

# yum install php71-bcmath php71-dba php71-dbg php71-enchant php71-gd php71-gmp php71-imap php71-intl php71-json php71-ldap php71-mbstring php71-mcrypt php71-mysqlnd php71-odbc php71-pdo php71-pdo-dblib php71-pecl-igbinary php71-pecl-igbinary-devel php71-pecl-imagick php71-pecl-imagick-devel php71-pecl-memcache php71-pecl-memcached php71-pecl-oauth php71-pecl-redis php71-pecl-ssh2 php71-pgsql php71-process php71-pspell php71-recode php71-snmp php71-soap php71-tidy php71-xml php71-xmlrpc

した後。

# ls -l | grep php
drwxr-xr-x 2 root root   4096 Dec 11 02:00 php-7.1.conf
drwxr-xr-x 2 root root   4096 Dec 11 02:09 php-7.1.d
-rw-r--r-- 1 root root  62394 Dec  5 19:41 php-7.1.ini
-rw-r--r-- 1 root root   4044 Dec  5 19:41 php-fpm-7.1.conf
drwxr-xr-x 2 root root   4096 Dec 11 02:08 php-fpm-7.1.d
lrwxrwxrwx 1 root root     30 Dec 11 02:02 php-fpm.conf -> /etc/alternatives/php-fpm.conf
lrwxrwxrwx 1 root root     27 Dec 11 02:02 php-fpm.d -> /etc/alternatives/php-fpm.d
drwxr-xr-x 2 root root   4096 Dec 11 02:09 php-zts-7.1.d
lrwxrwxrwx 1 root root     27 Dec 11 02:02 php-zts.d -> /etc/alternatives/php-zts.d
lrwxrwxrwx 1 root root     23 Dec 11 02:02 php.d -> /etc/alternatives/php.d
lrwxrwxrwx 1 root root     25 Dec 11 02:02 php.ini -> /etc/alternatives/php.ini

多すぎてわけが分からないです。*.confがファイルだったりディレクトリだったりと地獄。

公式でもtypoしていて、

# cat /etc/php-7.1.d/10-opcache.ini | grep 'opcache.blacklist_filename'
opcache.blacklist_filename=/etc/php-7.0.d/opcache*.blacklist

と、7.0のディレクトリ名になってました。

整理

まず、ztsは、マルチスレッド(Apacheのworker/event)で動作させるときに使う特別なPHPのためのもの(のはず)なので、一旦頭から追い出します。

# ls -l /etc/ | grep php | grep -v zts
drwxr-xr-x 2 root root   4096 Dec 11 15:38 php-7.1.conf
drwxr-xr-x 2 root root   4096 Dec 11 15:39 php-7.1.d
-rw-r--r-- 1 root root  62394 Dec  6 04:41 php-7.1.ini
-rw-r--r-- 1 root root   4044 Dec  6 04:41 php-fpm-7.1.conf
drwxr-xr-x 2 root root   4096 Dec 11 16:08 php-fpm-7.1.d
lrwxrwxrwx 1 root root     30 Dec 11 15:38 php-fpm.conf -> /etc/alternatives/php-fpm.conf
lrwxrwxrwx 1 root root     27 Dec 11 15:38 php-fpm.d -> /etc/alternatives/php-fpm.d
lrwxrwxrwx 1 root root     23 Dec 11 15:38 php.d -> /etc/alternatives/php.d
lrwxrwxrwx 1 root root     25 Dec 11 15:38 php.ini -> /etc/alternatives/php.ini

少し減りました。

また、シンボリックリンクが指す先も実はこのls結果の中で完結しているので省きます。

# ls -l /etc/ | grep php | grep -v zts | grep -v "^l"
drwxr-xr-x 2 root root   4096 Dec 11 15:38 php-7.1.conf
drwxr-xr-x 2 root root   4096 Dec 11 15:39 php-7.1.d
-rw-r--r-- 1 root root  62394 Dec  6 04:41 php-7.1.ini
-rw-r--r-- 1 root root   4044 Dec  6 04:41 php-fpm-7.1.conf
drwxr-xr-x 2 root root   4096 Dec 11 16:08 php-fpm-7.1.d

見るのはこの5つだけでOKです!

  • php-7.1.conf/
    これもphpの設定ファイルの格納ディレクトリです。 /etc/php-7.1.conf/README に、

; Copy or create the php.ini file here just for php 7.1. ; The php.ini file in this directory will take precendence ; over /etc/php.ini for php 7.1 only

とあるように、こちらの設定が優先されます。

  • php-7.1.d/
    phpの各モジュール用の設定ファイルを格納します。

  • php-7.1.ini
    phpの設定ファイルです。普通にiniファイルです。

  • php-fpm-7.1.conf
    php-fpmの設定ファイルです。global設定を入れます。

  • php-fpm-7.1.d/
    php-fpmの設定ファイルです。pool設定を入れます。

まとめた表

ファイル/ディレクトリ 説明
php-7.1.ini phpの設定ファイルです。普通にiniファイルです。
php-7.1.conf/ phpの追加設定ファイルの格納ディレクトリです。
php-7.1.d/ phpの各モジュール用の設定ファイルを格納します。
php-fpm-7.1.conf php-fpmの設定ファイルです。global設定を入れます。
php-fpm-7.1.d/ php-fpmの設定ファイル格納ディレクトリです。pool設定を入れます。