表題の通り、Zend_Sessionが使えません。
$session = new Zend_Session_Namespace('global');
と記述すると、下のエラーがでます。インスタンスを生成する部分を除けば
正常に動作し、他のZendFrameworlkコンポーネントは使える状態です。同じソースでもレンタルサーバ上では思い通りに動くので私のローカル環境の設定がおかしいと思うのですが、何を見たらいいでしょうか。
環境はWindowsVista、Apache 2.2.6、PHP 5.2.4(xampp)、ZendFramework1.0.3です。
Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Session must be started before any output has been sent to the browser; output started in C:\xampp\htdocs\index.php/1' in C:\xampp\ZendFramework\library\Zend\Session.php:359 Stack trace: #0 C:\xampp\ZendFramework\library\Zend\Session\Namespace.php(116): Zend_Session::start(true) #1 C:\xampp\htdocs\index.php(22): Zend_Session_Namespace->__construct('global') #2 {main} thrown in C:\xampp\ZendFramework\library\Zend\Session.php on line 359
if (headers_sent()) {
throw new Zend_Session_Exception(上記error_msg);
}
となっているので、HTTPヘッダが既に送信されているのが原因かと。
レンタルサーバで大丈夫なのは、output_bufferingが有効になっているからじゃないでしょうか。
ローカルでも動くように処理の順番を変えたほうがよいのでは?
お礼
早速の回答ありがとうございます。 教えていただいたoutput_bufferingをレンタルサーバと同じ、「4096」にすることで、動作するようになりました。 また、処理内容も検討してみようと思います。 ありがとうございました。