AC-5

某SEの雑記帳

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になっている

これでセッションが効くようになりました。

 - Linux, PHP