2017-09-15 12 views
0

誰かが私にアイデアを与える可能性があります。私は自分のローカルapache2にphp Webアプリケーションをインストールし、問題を抱えていましたが、他の多くの人がコードがそれらのために働いているように見せかけていました。php parse_ini_fileと定数の使用

ここでは、コードで行われていることの例を示します。 Iniファイルは設定を保存するために使用されます。この1「my_config.cfg」呼び出すことができます:

FOO=2 
BAR=something 

することは今のコードは次のようになります。私以外の使用に関するエラーを与えている

$config = parse_ini_file("/opt/test/my_config.cfg", TRUE); 
for ($i = 0; $i < $config[FOO]+1; $i++) { 
    .. 
} 

を一定に宣言しました。それを動作させるには、引用符を使用するようにコードを変更する必要があります:

$config = parse_ini_file("/opt/test/my_config.cfg", TRUE); 
for ($i = 0; $i < $config['FOO']+1; $i++) { 
    .. 
} 

質問はどうやって他の人のために働くことができますか?私の意見では、引用符なしでは動作しません。上記の場合、 "FOO"の定義文のコード全体をチェックしました。なにもない。だから、私は現在、そのことについてちょっと混乱していて、その話題にグーグルは何もできませんでした。

ご協力いただきありがとうございます。

+0

警告メッセージを読んでください。定数が見つからない場合は、名前を文字列リテラルに変換します。 – Barmar

+0

これがPHPのしくみです。配列キーは整数でも文字列でもかまいません - 文字列であれば、それらを引用する必要があります。すなわち「FOO」。引用符を付けずに頑強な文字列を使用する場合、PHPは定数を意味するものとみなします。 'define( 'FOO'、3);'最初に間違ったことをしているので、コードを「動作させる」ように変更する必要があります。出力ストリームに警告が書き込まれていないため、他の人には「動作」する可能性があります。チェックされていないログファイル内にのみ存在する可能性があります –

答えて

0

エラーメッセージを読んで、それは言う:

お知らせ:未定義の定数FOOの使用 - 仮定 'FOO'

FOOという名前の定数はありませんので、かのように、それは$config[FOO]を扱う意味$config['FOO']と書いてあります。これは、あなたがこのような間違いをしたときに役立つようにしようとしています。

他の人が警告を無効にすると、同じ動作をしますが警告メッセージは表示されません。

0

[OK]を、それは次のログ文を意味しては本当に問題ではない:

[Thu Sep 14 22:50:00.595913 2017] [:error] [pid 8365] [client 192.168.0.128:50717] PHP Notice: Use of undefined constant SLM_ANZAHL - assumed 'SLM_ANZAHL' in /var/www/include/config.php on line 62 

それはSLM_ANZAHL」として扱いますので - 右?それは "エラー"と書かれているので、それを考えなかった

関連する問題