SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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:~

php

答え

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();

関連するメモ

コメント