CentOS 7 上の NGINX・php が動作するサーバで「yum update」などでの更新後、session_start() でパーミッションエラーが発生することがある。どうやらパッケージマネージャが session ファイル保存ディレクトリのパーミッションをデフォルトに戻してしまうようだ。(Apache ではこの問題が起きない)
デフォルトでは /var/lib/php/session (php7.3)等になっていると思うが、これをパッケージマネージャが関与しないディレクトリに移動してしまえば、問題が発生しないのではないかと考え session.save_path ディレクティブで別のディレクトリを指定する。
# vim /etc/php-fpm/www.conf
php_value[session.save_path] = /var/session >> 追記
# mkdir /var/session
# chown nginx:nginx /var/session
# chmod 600 /var/session
# systemctl reload php-fpm.service
ただし、php-fpm を使用していない場合は…
# vim /etc/php.ini
session.save_path = "/var/www/session" >> 追記
この設定で php 等のアップデートを yum で行っても問題が起きなくなっている。