NginxでPHPのセッション変数が効かない
CentOS7にNginxとMariaDBでサーバ構築を行い、メールサーバを作る(Postfix+PostfixAdmin)に従ってメールサーバを構築していた際、
PostfixAdminのログイン画面からログインしても、エラーも出ずにページ遷移されず、ログインできない事象が発生しました。
Nginxのエラーログを見ると下記のようなエラーが出ていました。
[root@test]# tail -f /var/log/nginx/error.log←エラーログの閲覧
2016/05/10 13:09:36 [error] 16081#16081: *3338 FastCGI sent in stderr: "PHP message: PHP Warning: session_start(): open(/var/lib/php/session/sess_ck3m1cr0kg011ieisthrf18vv1, O_RDWR) failed: Permission denied (13) in /usr/share/nginx/html/postfixadmin/common.php on line 25
これを踏まえて、念のためphpinfoで確認してみると、session.save_pathの項目が/var/lib/php/sessionとなっていました。
ログの内容とphpinfoの内容から、/var/lib/php/sessionへの権限が無いようです。
sessionディレクトリの権限確認
[root@test]# cd /var/lib/php/←ディレクトリ移動 [root@test php]# ls -al←パーミッション確認 drwxrwx---. 2 root apache 82 5月 10 13:14 session←所有者:root グループ:apacheになっている
結果としてユーザー:nginxは所有者:root グループ:apacheのどちらにも属していないので、権限が無い為ファイルが作成できないという理由です。
権限を追加
[root@test php]# chown -R nginx:nginx session←所有者・グループをnginxに変更 [root@test php]# ls -al←パーミッション確認 drwxrwx---. 2 nginx nginx 82 5月 10 13:14 session←所有者・グループ:nginxになっている
これでセッションが効くようになりました。