FreeBSDのports情報を更新した際に、PHPのバージョンが5.5.12にアップデートされているのを確認しました。特に問題が報告されている様子はなかったため、深く考えずにいつも通り更新を行いましたが、結果的に大変な目に遭いました。
「がとらぼ」の環境では、nginxサーバとPHP-FPMを組み合わせて運用しているサーバがあり、そこに影響が出ました。具体的には、ウェブサイト上のPHPページを表示しようとした際、画面が真っ白になり、「BAD GATEWAY 502」というエラーメッセージが表示されました。このエラーはサーバ側の不具合を示すもので、特にPHP-FPMとnginx間の通信に問題が発生したと考えられます。
この問題の原因は、PHP-FPMの設定ファイル(php-fpm.conf)にありました。解決するためには、以下の設定を確認・修正する必要があります。1 2 3 4 | listen = /var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0666
|
「listen.mode」の設定が「0666」となっていることが重要です。この設定はPHP-FPMがUNIXソケットを使って通信する際のアクセス権限を決定します。バージョンアップにより、ソケットの権限が変更されていたため、通信が適切に行われず、結果的に502エラーが発生していました。
この問題に影響を受けるのは、UNIXソケットを使用してPHP-FPMとnginxを連携させている環境のユーザーだけです。TCP/IPを使って接続している場合は、同じ問題は発生しない可能性が高いです。しかし、UNIXソケットを使っている場合、今回のバージョンアップで挙動が変わったことに注意が必要です。
更新して挙動が変わったのが設定ファイルが書き換えられて、しかも、それが地味な設定のマスクの影響だなんてすぐに気付きません。
当初は設定のマスク(アクセス権限)が変更されたことに気づかず、原因を探るのに時間がかかりました。今回のようにバージョンアップによって予期せぬ問題が発生することがあるため、portsの更新後はすぐに動作確認を行い、設定ファイルが書き換えられていないかを確認することを強くお勧めします。PHP-FPMやNginxを使用している方は、同じトラブルを避けるためにも、設定ファイルの確認を怠らないようにしましょう。