【php】session_start()でエラー
問題
phpでsession_start()すると、以下のようなエラーが発生します。
Warning: Unknown: open(/var/lib/php/session/sess_isu2r2bqudeosqvpoo8a67oj02, O_RDWR) failed: Permission denied (13) in Unknown on line 0
session_start(): Failed to read session data:~
答え
CentOSならyumでインストールしたphpだと、session.save_path
が /var/lib/php/session
となっています。
/var/lib/php/session
の所有者はroot
で、Apacheやnginx、php-fpmなどの実行ユーザーから書き込み不能です。そのため、$_SESSION セッションの情報を保存するファイルを作れません。
session.save_path
のディレクトリの権限や所有者を変更すると、ひとまずしのげます、
chown -R apache:apache /var/lib/php/session
ただこの方法は、その後の yum update などのときに権限が元に戻ってしまうことがあります。
Webサーバーもしくはphp-fpmなどの実行ユーザーが書き込み可能などこか別な場所に、プログラムごとに違う場所を session.save_path
とする使い方がよいと思います。
例)
session_save_path('/xxx/yyy/zzz/session'); session_start();
コメント