nginx+php7.0でphp7.2にしたらphp-fpmでハマった話

どーも、cv0629です。先日このブログのWebサーバをApacheからnginxに変更しました。

それでさらにphp7.0をphp7.2に変更したら、案の定php-fpmでハマったのでその備忘録

php7.2へのアップデート方法

作業的にはほぼphpの再インストールです。

php7.2のリポジトリの確認

ll /etc/yum.repos.d/ | grep remi-

-rw-r--r-- 1 root root 456 6月 19 17:28 remi-php54.repo
-rw-r--r-- 1 root root 1314 6月 19 17:28 remi-php70.repo
-rw-r--r-- 1 root root 1314 6月 19 17:28 remi-php71.repo
-rw-r--r-- 1 root root 1314 6月 19 17:28 remi-php72.repo //こちら
-rw-r--r-- 1 root root 1314 6月 19 17:28 remi-php73.repo
-rw-r--r-- 1 root root 750 6月 19 17:28 remi-safe.repo

php7.0の削除

php7.0を削除しますが、先に下記コマンド等でインストールしているパッケージを確認してください。

rpm -qa | grep php

//削除の実行
yum remove php-*

php7.2のインストール

//インストールされるバージョンの詳細
yum info --enablerepo=remi,remi-php72 php

//php7.2のインストール
yum -y install --enablerepo=remi,remi-php72 php

//完了後、バージョン確認
php -v

必要なパッケージの再インストール(php-fpm含む)

先程のphp7.0の削除でパッケージ含めて削除されたかと思います。

なのでインストールしていたパッケージを参考に再度新しくphp7.2用としてインストールします。

ちなみに私はWordpress環境としては下記パッケージをインストールしました。

yum -y install --enablerepo=remi,remi-php72 php-fpm php-opcache php-devel php-mbstring php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-gd php-intl php-symfony php-pdo php-xml php-tokenizer php-pear php-zip php-mcrypt
まぁ入れ過ぎ感もありますが、ちょっと使いたいのもあるので。

そしてnginx、php-fpmの再起動をしてアクセスします。

systemctl restart nginx.service
systemctl restart php-fpm.service

nginx、php-fpmを再起動しても”502 Bad Gateway”

再起動してアクセスしても502エラーとなりましたのでログの確認。

tail -f /var/log/nginx/error.log

2018/07/13 12:03:38 [crit] 32112#32112: *1 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: cv0629.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "cv0629.com"

はい、nginxのconfファイルに設定したunixドメインソケットが無いと言われてます。

Socketがない

ll /var/run/php-fpm/

-rw-r--r-- 1 root root 4 7月 13 12:24 php-fpm.pid

php-fpmのconfファイルの修正

ということでphp-fpmのconfファイルの修正、再起動を行います。

vi /etc/php-fpm.d/www.conf
--省略--
;listen = 127.0.0.1:9000 ←これを';'コメントアウト
listen = /var/run/php-fpm/php-fpm.sock ←これを';'外して有効化
--省略--

//再起動
systemctl restart nginx.service
systemctl restart php-fpm.service

以上でphp7.0→7.2のアップデート時にphp-fpmでハマった内容です。

参考記事:
CentOS7のPHP7.1を7.2にアップグレードする[remi]
nginx + php-fpm socketで接続する
nginxのphp-fpmでハマる