0

私のプロジェクトは ZF 1.11 で実行されており、次のエラーがランダムにスローされます。

Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Zend_Session::start() - /home/user/www/MyProject/library/Zend/Session.php(Line:469): Error #8 session_start() [<a href='function.session-start'>function.session-start</a>]: ps_files_cleanup_dir: opendir(/tmp) failed: Permission denied (13) Array' in /home/user/www/MyProject/library/Zend/Session.php:482 Stack trace: 
#0 /home/user/www/MyProject/library/Zend/Session/Namespace.php(143): Zend_Session::start(true) 
#1 /home/user/www/MyProject/library/Dlx/Acl/Permissao.php(8): Zend_Session_Namespace->__construct('user_info') 
#2 /home/user/www/MyProject/application/Bootstrap.php(72): Dlx_Acl_Permissao->__construct(Object(Zend_Db_Adapter_Pdo_Mysql)) 
#3 /home/user/www/MyProject/library/Zend/Application/Bootstrap/BootstrapAbstract.php(669): Bootstrap->_initLoaders() 
#4 /home/user/www/MyProject/library/Zend/Application/Bootstrap/BootstrapAbstract.php(622): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('loaders') 
#5 /home/user/ in /home/user/www/MyProject/library/Zend/Session.php on line 482

ご覧のとおり、/tmp ディレクトリのセッションを消去しようとしますが、私の application.ini では、設定によって session.save_path が APPLICATION_PATH "/../data/session" (ZF デフォルト conf) に設定され、セッションが保存されます。このパスにありますが、gc が実行されると、間違ったディレクトリでクリーニングしようとします

これは私の application.ini セッション構成です。

http://codepad.org/mJUyipG0

ところで、/data および /data/session パーミッションは 777 に設定されています

何か案は ?

4

1 に答える 1

1

php.ini/tmpが、php セッションの保存用のデフォルト ディレクトリであると思われることを確認します。私のインストールでは、保存パスの行はコメントアウトされていますが。;session.save_path = "/tmp"

パラメータが正しく設定されていることを確認するために、ダンプZend_Session::getOptions();(これは静的メソッドです) によってデバッグすることもできます。

これが例外の原因である可能性があります。

string save_path - 正しい値はシステムに依存し、PHP プロセスによって読み取りおよび書き込み可能なディレクトリへ の絶対パスを使用して、開発者が提供する必要があります。書き込み可能なパスが指定されていない場合、Zend_Session は起動時に (つまり、start() が呼び出されたときに) 例外をスローします。

絶対パスを指定してアクセス許可を確認するだけで、これは簡単です。

..パスに問題がある可能性があります。APPLICATION_PATH "/../data/session"

于 2012-11-24T09:58:40.817 に答える