This post is also available in: English-US (英語)
CakePHPのインストール時に、下記のようなエラーが出たときに調べたことと対処した内容のメモです。
CakePHP:Warning: session_start() [function.session-start: open(/tmp/sess_xxx, O_RDWR) failed: Permission denied (13) [CORE/Cake/Model/Datasource/CakeSession.php line 618]
エラーの内容は、セッションの保存先のファイルへのパーミッションがないというエラーです。
php.iniで[session.save_path]が使える場合には[/tmp]ディレクトリを書き込み可能にすることで解決できるようです。レンタルサーバーでは使用できない場合が多いので別の解決方法を探しました。
また、.htaccessで[session.save_path]を設定できるようなのですが、無理矢理感があるので使いませんでした。
Contents
エラーの対処方法
[app/Config/core.php]のファイルを書き換えます。
リンク先(GitHub)の219行目以降の部分「'defaults' => 'php'」を「'defaults' => 'cake'」と書き直します。
書き換えることで変更される内容については、181-217行目あたりのコメントアウトされた部分に書いています。
['defaults' => 'php']はphp.iniで設定された方法、['defaults' => 'cake']はCakePHPの[/tmp ]ディレクトリにセッションを保存する...みたいなことが書いています。
//デフォルト Configure::write('Session', array( 'defaults' => 'php' ));
//書き直した後 Configure::write('Session', array( 'defaults' => 'cake' ));
フォルダーのパーミッションの変更
あと、[/app/tmp/sessions]フォルダーのパーミッションを[755]から[757]に変更します。
参考サイト:
php - CakePHP: Permission denied (13) - Stack Overflow
セッション — CakePHP Cookbook 2.x ドキュメント
No tags for this post.