※ ChatGPTを利用し、要約された質問です(原文:Smarty の Undefined Index)
SmartyのUndefined Index
このQ&Aのポイント
PHPで書かれたプログラムの内容については、開発に携わっていなかったので詳しいことは分からないのですが、ソースコードを見ると、確かに変数が初期化されないまま来ているので Undefined Index が表示されるのは当然という感じです。
旧サーバでは、変数が初期化されていなくてもメッセージが表示されずに処理される設定になっているのではないかと思うのですが、どこをどう変えれば良いのかわからない状態です。
あと数週間は旧サーバも稼働していますので比較することは可能ですが、チェックすべきポイント等ありましたら教えていただければありがたいです。
CentOS5.5 のサーバ上にて、Apache + PHP + Smarty + Zend Framework で
構築されたサイトを、事情により異なるサーバへ引っ越すことになりました。
新しいサーバにも CentOS5.5 がインストールされたものを用意し、
Apache と PHP は旧サーバと同じバージョンのものをインストールし、
Smarty と Zend Framework は旧サーバから tar ball でまとめて
コピーし展開しました。
その他ソースコードも tar ball でまとめて持ってきましたので、差異はないと
思っていたのですが、新しいサーバのページを表示させると、あちこちに
下記のようなエラーメッセージが表示されてしまいました。
[8] Undefined index: checked /file_path_to_smarty/templates_c/%%A6^A6C^A6C4B1AA%%index.tpl.php(143)
PHPで書かれたプログラムの内容については、開発に携わっていなかったので
詳しいことは分からないのですが、ソースコードを見ると、確かに変数が
初期化されないまま来ているので Undefined Index が表示されるのは
当然という感じです。
error_reporting や display_errors の設定の問題かと思いましたが、
設定やソースコードを変えてもエラーが表示されてしまいました。
Smarty には default という修飾子がありますが、もともとのソースコードでは
書かれていないので旧サーバでは default 無しでもメッセージが表示されない
ようです。
旧サーバでは、変数が初期化されていなくてもメッセージが表示されずに
処理される設定になっているのではないかと思うのですが、どこをどう変えれば
良いのかわからない状態です。
あと数週間は旧サーバも稼働していますので比較することは可能ですが、
チェックすべきポイント等ありましたら教えていただければありがたいです。
よろしくお願いします。
お礼
早速ありがとうございます。 php.ini にて下記の設定を試しましたが、状況は変わりませんでした。 phpinfo() で反映されていることを確認しながら試しました。 error_reporting = E_ALL & ~E_NOTICE とすると、phpinfo() では 30711 と表示されましたが、状況は変わりませんでした。 error_reporting = E_ALL ^ E_NOTICE では 30719 ^ 8 と表示されましたが、 状況は変わりませんでした。 error_reporting = 0 としてみましたが、これも変わりませんでした。 E_NOTICE で表示される(通常の)Undefined Index エラーは下記の形式ですが、 Notice: Undefined Index ~~~ 今回は、先頭が [8] となっているので、もしかして違うところで表示されて いるのかも?とも思っています。 [8] Undefined Index ~~~
補足
どうも、ありがとうございました。 他の方法で対処することになりました。 中途半端になってしまい申し訳ありません。