2

Windows 7 に WAMP サーバーがあります。

次のようなphpコードがあります:

<html>
<head>
<script>
 var myvar;
 <?php include "myotherphp.php" ?> <!-- this put single line, like myvar="error"; or myvar="ok"; -->
</script>
<body>
...
<script>
if (myvar === "error") {
... do something ...
}
</script>
<body>

そして myotherphp.php のコードは計算を行い、次のようなことを行います...

<?php
...
echo 'myvar="error";
?>

myotherphp.php には数行のコードがありますが、... IIS の場合と同様に、問題はなく、例外も発生しませんでしたが、迷惑なコードがコードに自動的に挿入されます。

SCREAM: Error suppression ignored for
Notice: Undefined index: ...

不要なコードです。1.コードを配置しないオプションはありますか(コードが原因でHTMLが適切にコンパイルされないため、スクリプトに他のエラーが発生するため、さらに面倒です.2.コード全体をここに配置したい(行数) 、他の php を含む) ですが、コードを適切にコンパイルするための概念が必要です。

phplint http://www.icosaedro.it/phplint/phplint-on-line.htmlを見つけましたが、これが apache に適しているかどうか、オンラインではない phplint に適しているかどうかはわかりません。次のような行から:

required_once __DIR__ . "/mythirdphp.php";

コンパイルされることはありません (セキュリティ上の問題のため)。それはjslint.comとは異なります(私の意見では、はるかに優れており、理解しやすいです。JavaScriptに何千もの行を配置し、jslintでエラーや警告なしでセミコンパイルできました...)

この lint の問題とバグのあるコードを理解する必要があります。クロスプラットフォームでコンパイルする必要があります。

他のツールがある場合は、お知らせください。

ありがとう :)

4

1 に答える 1

1

未定義のインデックス エラーは、このような不適切な PHP コードの結果です (単なる例であり、考えられる原因の完全なリストではありません)。

$x = $_POST['some_variable']

ただし、「some_variable」はオプションであり、この場合、POST 配列のスクリプトに渡されていません。

適切な解決策は、変数を使用する前に変数が存在するかどうかをテストしてコードを修正することです。

$x = array_key_exists('some_variable'] ? $_POST['some_variable'] : '';

あるいは、数千行のコードを修正する必要がある場合は、追加してエラー報告をオフにすることができます

error_reporting(0);

すべての悪いコードを含むスクリプトの先頭に移動します。これは汚い解決策ですが、唯一の選択肢かもしれません。

于 2013-06-13T11:20:00.180 に答える