27

私は現在、(とりわけ)Zend_Authを使用して新しいアプリケーションに取り組んでいますが、何らかの理由で、このエラーメッセージは完全にランダムに(または継ぎ目で)任意の場所に表示されます

Zend_Session::start()-/home/hannes/workspace/develop/library/Zend/Session.php(Line:480):エラー#8 session_start()[function.session-start]:ps_files_cleanup_dir:opendir(/ var / lib / php5)が失敗しました:アクセスが拒否されました( 13)アレイ

  • #0 /home/hannes/workspace/develop/library/Zend/Session/Namespace.php(143):Zend_Session :: start(true)
  • #1 /home/hannes/workspace/develop/library/Zend/Auth/Storage/Session.php(87):Zend_Session_Namespace-> __construct('Zend_Auth')
  • #2 /home/hannes/workspace/develop/library/Zend/Auth.php(91):Zend_Auth_Storage_Session-> __construct()
  • #3 /home/hannes/workspace/develop/library/Zend/Auth.php(141):Zend_Auth-> getStorage()
  • #4 /home/hannes/workspace/develop/xxxxxxx/application/controllers/AdminController.php(10):Zend_Auth-> hasIdentity()
  • #5 /home/hannes/workspace/develop/library/Zend/Controller/Action.php(133):AdminController-> init()
  • #6 /home/hannes/workspace/develop/library/Zend/Controller/Dispatcher/Standard.php(262):Zend_Controller_Action-> __construct(Object(Zend_Controller_Request_Http)、Object(Zend_Controller_Response_Http)、Array)
  • #7 /home/hannes/workspace/develop/library/Zend/Controller/Front.php(954):Zend_Controller_Dispatcher_Standard-> dispatch(Object(Zend_Controller_Request_Http)、Object(Zend_Controller_Response_Http))
  • #8 /home/hannes/workspace/develop/library/Zend/Application/Bootstrap/Bootstrap.php(97):Zend_Controller_Front-> dispatch()
  • #9 /home/hannes/workspace/develop/library/Zend/Application.php(366):Zend_Application_Bootstrap_Bootstrap-> run()
  • #10 /home/hannes/workspace/develop/xxxxxxx/public/index.php(26):Zend_Application-> run()
  • #11{メイン}
4

6 に答える 6

16

どうやらこの問題は主に(のみ?)debian / ubuntuベースのシステムに影響を及ぼしており、自動セッションガベージコレクションに関係しています。

php.iniで変数session.gc_probabilityが1に設定されました。これは、ガベージコレクターが実行され、phpセッションが格納されているディレクトリ/ var / lib / php5をクリーンアップする確率が1%であることを意味します。

どうやらこのフォルダはwww-dataで書き込み可能ではないため、前述のエラーが発生し、Zend例外がスローされます。session.gc_probabilityを0に設定すると、問題が解決しました。とにかくセッションフォルダはcronジョブによってクリーンアップされるため、phpガベージコレクタを実行する必要はありません。

http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbageから

于 2010-05-28T21:33:44.950 に答える
13

解決策は、php.iniファイルのsession.save_pathを書き込み可能なディレクトリに設定することです。例:session.save_path ="/tmp"。最初の例でセッションガベージコレクションをオフにすることはお勧めできません。2番目の例はUbuntu10.04では機能しません

于 2010-12-21T13:13:18.857 に答える
11

実際に session.save_path のディレクトリを変更すると、ガベージ コレクションがオフになります。それが今あなたのために働く理由です。ガベージ コレクションが必要な場合は、元のディレクトリの所有者を php ユーザー "www-data" に変更できます。

chown www-data /var/lib/php5

別の方法として、新しいディレクトリのガベージ コレクション スクリプトを作成することもできます。

于 2011-02-16T03:02:49.197 に答える
5

Symfony フレームワークでもこの問題が発生しました。問題は、php にセッション ストレージ ディレクトリへのアクセス許可がないことです。セッションの保存ディレクトリを書き込み可能な場所に変更するだけです。Zend Framework Bootstrap 構成 ini:

resources.session.save_path = APPLICATION_PATH "/../data/session"
于 2010-10-18T08:19:11.183 に答える
1

最初の Zend Framework を使用して、MAMP を使用する OS X 10.8.4 でこの問題が発生しました。session.save_pathinphp.iniにデフォルトで設定されているディレクトリは/Applications/MAMP/tmp/phpです。そのディレクトリ内のすべてを削除するだけで解決できました。

于 2013-07-03T08:29:40.047 に答える