私はファイルをサーバーに移動していて、'mode'で''(一重引用符)なしで$_GET[mode]のような変数を使用しています。ローカルでは完全に機能しますが、サーバー上で通知を受け取ります。これを克服するにはどうすればよいですか? phpinfoファイルは次のとおりです 。phpinfo サーバーでも同じ動作をする方法はありますか?
2 に答える
E_NOTICE
文字列の周りの引用符を忘れたと不平を言う s をどのように克服できますか?
文字列を引用符で囲みます。
$_GET['mode']
またerror_reporting
、ローカル サーバーのレベルが十分ではないようです。Web サイトやアプリケーションを開発する際にこの種の間違いが見られるように、高くする必要があります。
運用サーバーでは、これより低く設定されている場合があります。
配列に関する PHP マニュアルの引用:
$foo[bar] が間違っているのはなぜですか?
文字列リテラルの配列インデックスは常に引用符で囲んでください。たとえば、
$foo['bar']
は正しいですが、そうで$foo[bar]
はありません。しかし、なぜ?古いスクリプトでは、この種の構文に遭遇するのが一般的です。
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
これは間違っていますが、うまくいきます。その理由は、このコードには文字列 ( - 引用符に注意してください
bar
) ではなく、未定義の定数 ( )があるためです。'bar'
PHP は将来、残念ながらそのようなコードでは同じ名前を持つ定数を定義する可能性があります。これが機能するのは、PHP が生の文字列 (既知の記号に対応しない引用符で囲まれていない文字列) を生の文字列を含む文字列に自動的に変換するためです。たとえば、 という名前の定数が定義されていない場合bar
、PHP は文字列を置き換えてそれ'bar'
を使用します。
つまり、 はmode
未定義の定数です。
定数に関する PHP マニュアルの引用:
未定義の定数を使用すると、PHP は定数自体の名前を意味していると見なします。これは、定数を文字列として呼び出した場合と同じです (CONSTANT と "CONSTANT")。この場合、レベルのエラー
E_NOTICE
が発行されます。なぜ$foo[bar]
間違っているのかについてのマニュアルエントリも参照してください(最初define()
に定数として bar を指定しない限り)。定数が設定されているかどうかを確認するだけの場合は、defined()
関数を使用します。
解決策: キーを引用符で囲みます。