web-dev-qa-db-ja.com

Zend_Session / Zend_Authはランダムにエラーメッセージをスローしますps_files_cleanup_dir:opendir(/ var / lib / php5)failed:Permission denied(13)

私は現在、(とりわけ)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 {メイン}
27
Hannes

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

12
Toz

どうやらこの問題は主に(のみ?)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

16
robertbasic

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

chown www-data/var/lib/php5

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

11
Rob

私はSymfonyフレームワークでもこの問題を抱えていました。問題は、phpがセッションストレージディレクトリへのアクセス許可を持っていないことです。セッション保存ディレクトリを書き込み可能な場所に変更するだけです。 ZendFrameworkの場合Bootstrap config ini:

resources.session.save_path = APPLICATION_PATH "/../data/session"
5
Brady Olsen

PHP 7.0を使用している場合

Sudo chown www-data:www-data /var/lib/php/sessions
2
BadHorsie

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

1
Artem Gordinsky