私は現在、(とりわけ)Zend_Authを使用して新しいアプリケーションに取り組んでいますが、何らかの理由で、このエラーメッセージは任意の場所に完全にランダムに表示されます(または継ぎ目があります)
Zend_Session::start()
-/home/hannes/workspace/develop/library/Zend/Session.php(Line:480):エラー#8session_start()
[function.session-start]:ps_files_cleanup_dir: opendir(/ var/lib/php5)が失敗しました:アクセスが拒否されました(13)配列
解決策は、php.iniファイルのsession.save_pathを書き込み可能なディレクトリに設定することです。例:session.save_path = "/ tmp"。最初の例でセッションガベージコレクションをオフにすることはお勧めできません。 2番目の例はUbuntu10.04では機能しません
どうやらこの問題は主に(のみ?)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
実際にsession.save_pathのディレクトリを変更すると、ガベージコレクションがオフになります。それが今あなたのために働く理由です。ガベージコレクションが必要な場合は、元のディレクトリ所有者をphpユーザー「www-data」に変更できます。
chown www-data/var/lib/php5
別の方法として、新しいディレクトリのガベージコレクションスクリプトを作成することもできます。
私はSymfonyフレームワークでもこの問題を抱えていました。問題は、phpがセッションストレージディレクトリへのアクセス許可を持っていないことです。セッション保存ディレクトリを書き込み可能な場所に変更するだけです。 ZendFrameworkの場合Bootstrap config ini:
resources.session.save_path = APPLICATION_PATH "/../data/session"
PHP 7.0を使用している場合
Sudo chown www-data:www-data /var/lib/php/sessions
この問題は、最初のZendFrameworkを使用したMAMPを搭載したOSX10.8.4で発生しました。 session.save_path
のphp.ini
に設定されているディレクトリはデフォルトで/Applications/MAMP/tmp/php
です。そのディレクトリ内のすべてを削除するだけで解決できました。