私はあなたたちの誰かが以前にこの問題に遭遇したことがあるかどうかを確認するために書いています、そしてそれが私に起こった理由を理解する機会があります。
これが物語です。
Zend Framework v。1.8より前に多くのZFアプリケーションを開発しましたが、その後約18か月間停止しました。今度は、ZendFrameworkを再度使用することにした新しいプロジェクトを開始する必要がありました。
ローカルサーバーにバージョン1.11.3がインストールされていたため、最新リリースをダウンロードしませんでした。
Bootstrap.phpファイルでZend_Applicationを使用する前は、セッションオプションをconfig.iniファイルに入れてセッションを開始し、次のようにZend_Sessionインスタンスにロードしていました。
config.ini
sessions.name = NAME
sessions.use_only_cookies = 1
sessions.save_path = APPLICATION_PATH "/../tmp/sessions"
sessions.strict = on
sessions.remember_me_seconds = 1800
アプリケーションを起動する前のindex.php(パブリックWebサーバーディレクトリへ):
Globals::startSession();
さまざまな便利なメソッドを備えたカスタムグローバルクラス:
class Globals
{
static public function startSession()
{
$sessions_conf = self::getConfig()->sessions;
Zend_Session::setOptions($sessions_conf->toArray(););
Zend_Session::start();
}
}
これは常に非常にうまく機能し、セッションを有効にして(Zend_Session_Namespaceで使用)、セッションファイルをsave_pathに保存します。
Zend_Applicationを使用すると、マニュアルには、セッションオプションを「セクション」リソースの下のapplication.iniファイルに保存するように指示されており、Zend_Sessionは自動的に構成されます...
私はこのようにしました:
; SESSIONS
resources.session.name = NAME
resources.session.use_only_cookies = 1
resources.session.save_path = APPLICATION_PATH "/../tmp/sessions"
resources.session.strict = on
resources.session.remember_me_seconds = 1800
うまくいきませんでした。そこで、Bootstrap.phpファイルの_initSession()メソッドと_initForceSession()メソッドを(同時にではなく)使用して、クラスの先頭に配置し、コードを書き込んでみました。
$this->bootstrap('session');
しかし、セッションは機能せず、データはhttpリクエスト間で保存されず、セッションファイルはsave_pathに書き込まれませんでした...
誰か、これが正常な動作であるかどうかを教えてください(多分私はどこかで何かを逃したかもしれません...)?
明らかに、以前の方法を再実装することで問題を解決しました(そしてそれは完全に機能します)が、正しく使用する方法を学びたいと思います。
前もって感謝します。