5

私はすべてのphpを新しいマシンにセットアップしましたが、非常に多くの通知警告が表示されます。

私のコードは私の古いマシンでエラーなしで正しく動作しています。

例えば。次の行(レコードセット値を取得する必要があります)により、通知が発生します。$ ID = $ rs [id];

その理由は、idフィールドの引用符が欠落しているためですが、存在しない値で$ _GETを呼び出すなどの場合も、通知が発生します。

誰もがこれの理由を知っていますか?レコードセットの引用符や大量のisset()に煩わされることなく、古いマシンのように「シンプルな」コーディング方法を維持したいのですが、何かアイデアはありますか?

ありがとう

4

4 に答える 4

5

新しいマシンへのPHPのインストールには、エラーだけでなく通知を表示する、より堅牢な構成があります。それは良い。私は自分のサーバーで何らかの通知を発するPHPスクリプトを書いたり受け入れたりすることは決してありません。

この種の「怠惰な」コーディング(許してください、私はあなたを助けたいです!)は将来の問題(コードは読みにくく、デバッグするのが難しい)と間接的にセキュリティ上の懸念(「怠惰な」コードはしばしば欠陥があります)をもたらします。通知を起動するすべてを修正します。:)

そして、可能であれば、オブジェクト指向プログラミング、カプセル化、情報隠蔽など、より高度なPHPを学びましょう。これが今日のやり方であり、以前よりもうまく機能しています。通知抑制とを中心に構築された古いPHPスクリプトは、register_globalsややダンプされていました。

于 2011-05-05T19:29:58.723 に答える
4

通知の理由は、「未定義の定数」があるためです。意図した文字列を引用符で囲まない場合、phpはそれを定数として扱います。定義されていない場合、phpはそれを強力なものとして扱います。次の例を見てください。

$array = array(
   'one' => 'right'
   , 'two' => 'wrong'
);
define('one', 'two');

echo $array[one]; //echoes "wrong"

また、定義されていない配列(上記など)のキーにアクセスしようとすると、通知が表示されます$array['three'];。PHPは、他の言語がエラーになる(またはさらに悪い)ので、これを行うのに十分です。

通知はあなたを悩ますだけではありません。コードに問題があり、対処することを強く検討する必要があることを通知します。

于 2011-05-05T19:31:50.300 に答える
3

エラー報告レベルはマシン間で異なるようです。error_reportingマシン間でphp.iniのレベルを比較します。

于 2011-05-05T19:29:15.530 に答える
1

2台のサーバーに異なるerror_reporting値が設定されているようです。php.iniを確認し、それに応じて設定します。

于 2011-05-05T19:30:11.943 に答える