私は自分のプロジェクトで問題が発生したことはありません。つい最近、arch linux(5.4にアップデート)でpacman-updateを実行したとき、私のプロジェクトの多くはもう実行できなくなりました。
興味深いことに、この問題は、セッションファイルがファイルシステム上に作成された直後にのみ発生します。つまり、/ tmp / sess *が存在しない限り、初めてWebサイトに電話をかけることができます。
もう一度呼び出したいときに/tmp/ sess *が既に書き込まれていると、次のエラーが発生します(stacktrace、Zend Frameworkを含む)。
Zend_Controller_Exception: session has already been started by session.auto-start or session_start()#0 /srv/http/bahasa/library/Zend/Session/Namespace.php(143): Zend_Session::start(true)
#1 /srv/http/bahasa/library/Zend/Auth/Storage/Session.php(87): Zend_Session_Namespace->__construct('Zend_Auth')
#2 /srv/http/bahasa/library/Zend/Auth.php(91): Zend_Auth_Storage_Session->__construct()
#3 /srv/http/bahasa/library/Zend/Auth.php(141): Zend_Auth->getStorage()
#4 /srv/http/bahasa/library/Skoch/Controller/Plugin/Navigation.php(59): Zend_Auth->hasIdentity()
#5 /srv/http/bahasa/library/Zend/Controller/Plugin/Broker.php(287): Skoch_Controller_Plugin_Navigation->dispatchLoopStartup(Object(Zend_Controller_Request_Http))
#6 /srv/http/bahasa/library/Zend/Controller/Front.php(928): Zend_Controller_Plugin_Broker->dispatchLoopStartup(Object(Zend_Controller_Request_Http))
#7 /srv/http/bahasa/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#8 /srv/http/bahasa/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#9 /srv/http/bahasa/public/index.php(30): Zend_Application->run()
#10 {main} in /srv/http/bahasa/library/Zend/Controller/Plugin/Broker.php on line 312
もちろん、stackoverflowでこの問題について他の回答を確認しましたが、次のようになります。
- session.auto-startが0に設定されている
- library / Zend /の外部の場所でsession_start()呼び出しはありません(プロジェクトディレクトリ全体でgrep -rを実行しました)
- Bootstrap.phpにZend_Session::start()を(バグ修正として)書き込むと、新しい致命的なエラーが発生します
- ファイルシステムの権限は問題なく、/ tmpには777があり、作成されたsess-fileにはhttp rwがあります(777は動作を変更しません)。
また、前述のように、PHP5.3からPHP5.4にアップデートするとすぐに奇妙なことが起こりました。問題は、ダウングレードが機能していないように見えることです(その後、mysql-librariesが何らかの形で壊れています)。
そして、すでに述べたように、私にとって最も奇妙なことは、セッションファイルが/tmpに作成されたときにのみ発生することです。/ tmpにセッションファイルがない場合、すべてが完全に機能します。
そして、ええ、それは私自身のプロジェクトが影響を受けるだけでなく、私が別の会社(彼らのサーバーと彼らのローカルPCでチャームのように動作する)のために取り組んでいるので、私自身のコード内の問題と矛盾します(同じように2つのZendFrameworkプロジェクトで発生します)。
そしてもちろん、私のプロジェクトは、PHP5.2.12を使用したオンラインWebスペースでもチャームのように実行されます。
以前のPHPの通知も興味深いものになると思います。
Notice: Array to string conversion in /srv/http/bahasa/library/Zend/Session/Exception.php on line 58
Call Stack:
0.0009 134352 1. {main}() /srv/http/bahasa/public/index.php:0
0.2805 3703732 2. Zend_Application->run() /srv/http/bahasa/public/index.php:30
0.2805 3703756 3. Zend_Application_Bootstrap_Bootstrap->run() /srv/http/bahasa/library/Zend/Application.php:366
0.2806 3703876 4. Zend_Controller_Front->dispatch() /srv/http/bahasa/library/Zend/Application/Bootstrap/Bootstrap.php:97
0.2873 3829732 5. Zend_Controller_Plugin_Broker->routeStartup() /srv/http/bahasa/library/Zend/Controller/Front.php:908
0.2873 3829820 6. Skoch_Controller_Plugin_Autologin->routeStartup() /srv/http/bahasa/library/Zend/Controller/Plugin/Broker.php:237
0.2883 3840992 7. Zend_Auth->hasIdentity() /srv/http/bahasa/library/Skoch/Controller/Plugin/Autologin.php:12
0.2884 3841016 8. Zend_Auth->getStorage() /srv/http/bahasa/library/Zend/Auth.php:141
0.2960 3980864 9. Zend_Auth_Storage_Session->__construct() /srv/http/bahasa/library/Zend/Auth.php:91
0.2960 3981072 10. Zend_Session_Namespace->__construct() /srv/http/bahasa/library/Zend/Auth/Storage/Session.php:87
0.2961 3981232 11. Zend_Session::start() /srv/http/bahasa/library/Zend/Session/Namespace.php:143
0.2968 3989956 12. session_start() /srv/http/bahasa/library/Zend/Session.php:469
0.2972 3997536 13. PropelAutoloader->autoload() /srv/http/bahasa/library/Zend/Session.php:0
0.3000 4060508 14. require('/srv/http/bahasa/application/models/bahasa/User.php') /srv/http/bahasa/library/propel-1.6.4/runtime/lib/util/PropelAutoloader.php:108
0.3377 4925056 15. Zend_Session_Exception::handleSessionStartError() /srv/http/bahasa/library/propel-1.6.4/runtime/lib/util/PropelAutoloader.php:16
ただし、Propelは独自のコード内にsession_start()を持っていないようであるため、それが原因ではありません(propelもチェックされたプロジェクトディレクター内にあります)。
個人的には、この通知の完全な意味はまだわかりませんが、長く見ると、エラーに関連しているように見えます(少なくともスタックトレース、つまり、通知は配列から文字列への変換のみに関するものです)。
Zend_Session :: start()の呼び出しのバックトレース
さて、Zend_Session::start()
2回呼び出されたときのバックトレースを見つけました。
初め:
#0 Zend_Session::start(1) called at [/srv/http/bahasa/library/Zend/Session/Namespace.php:143]
#1 Zend_Session_Namespace->__construct(Zend_Auth) called at [/srv/http/bahasa/library/Zend/Auth/Storage/Session.php:87]
#2 Zend_Auth_Storage_Session->__construct() called at [/srv/http/bahasa/library/Zend/Auth.php:91]
#3 Zend_Auth->getStorage() called at [/srv/http/bahasa/library/Zend/Auth.php:141]
#4 Zend_Auth->hasIdentity() called at [/srv/http/bahasa/library/Skoch/Controller/Plugin/Autologin.php:12]
#5 Skoch_Controller_Plugin_Autologin->routeStartup(Zend_Controller_Request_Http Object ([] => Array ([0] => _GET,[1] => _POST),[] => /de/,[] => ,[] => ,[] => ,[] => Array (),[] => ,[] => Array (),[] => ,[] => ,[] => module,[] => ,[] => controller,[] => ,[] => action)) called at [/srv/http/bahasa/library/Zend/Controller/Plugin/Broker.php:237]
#6 Zend_Controller_Plugin_Broker->routeStartup(Zend_Controller_Request_Http Object ([] => Array ([0] => _GET,[1] => _POST),[] => /de/,[] => ,[] => ,[] => ,[] => Array (),[] => ,[] => Array (),[] => ,[] => ,[] => module,[] => ,[] => controller,[] => ,[] => action)) called at [/srv/http/bahasa/library/Zend/Controller/Front.php:908]
#7 Zend_Controller_Front->dispatch() called at [/srv/http/bahasa/library/Zend/Application/Bootstrap/Bootstrap.php:97]
#8 Zend_Application_Bootstrap_Bootstrap->run() called at [/srv/http/bahasa/library/Zend/Application.php:366]
#9 Zend_Application->run() called at [/srv/http/bahasa/public/index.php:29]
2番:
#0 Zend_Session::start(1) called at [/srv/http/bahasa/library/Zend/Session/Namespace.php:143]
#1 Zend_Session_Namespace->__construct(Zend_Auth) called at [/srv/http/bahasa/library/Zend/Auth/Storage/Session.php:87]
#2 Zend_Auth_Storage_Session->__construct() called at [/srv/http/bahasa/library/Zend/Auth.php:91]
#3 Zend_Auth->getStorage() called at [/srv/http/bahasa/library/Zend/Auth.php:141]
#4 Zend_Auth->hasIdentity() called at [/srv/http/bahasa/library/Skoch/Controller/Plugin/Navigation.php:59]
#5 Skoch_Controller_Plugin_Navigation->dispatchLoopStartup(Zend_Controller_Request_Http Object ([] => Array ([0] => _GET,[1] => _POST),[] => /de/,[] => ,[] => ,[] => de,[] => …