問題タブ [e-notices]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP-E_NOTICESを有効にしてより良いコードを書くにはどうすればよいですか?
私はE_NOTICESをオンにして開発することを好みますが、配列インデックスを操作するときは、過剰で過度に冗長なコードを記述しなければならないことがよくあります。E_NOTICESを有効にして、このコードをより少ないコードで記述するにはどうすればよいですか。
通知が抑制された
通知なしに抑制
zend-framework - zendフレームワークでカスタムエラーレベルを設定する
Zend Frameworkでカスタムエラーレベルを設定するにはどうすればよいですか?たとえば、E_NOTICEを無効にします。
ありがとう。
php - PHP配列が未定義のインデックスを作成しています:0通知が消えます
E_NOTICES をオンにすると、コードが機能し、セット キーを使用して配列にデータを挿入しようとするたびに、「重大度: 通知メッセージ: 未定義のインデックス: 0」が表示され続けます。デバッグしようとすると本当に面倒です。
E_NOTICESをオフにせずに通知を消すには、何が間違っていますか?
php - APC (Alternate PHP Cache) が多数の PHP 通知をスローする
PHP 5.3.6 を実行している Linux ボックスに APC 3.1.9 をセットアップしました。
キャッシュは正常に機能しますが、エラー ログで、APC が次のような多くの PHP 通知をスローしていることに気付きました。
[Wed Jun 29 01:08:56 2011] [error] [client ip] PHP Notice: require_once() [function.require-once]: apc_cache_find [16085954]\n /path/to/file の 75 行目、リファラー: /path/to/referer/file
[Wed Jun 29 01:08:56 2011] [error] [client ip] PHP Notice: require_once() [function.require-once]: 1. h->opened_path=[/path/to/file] h-> filename=[/path/to/file]\n /path/to/file の 84 行目、リファラー: /path/to/referer/file
[Wed Jun 29 01:08:56 2011] [error] [client ip] PHP Notice: Unknown: apc_cache_find [16215361]\n in Unknown on line 0, referer: /path/to/referer/file
--> /path/to/file & /path/to/referer/file は、元のファイル名を置き換えて挿入されました
APC がこれらすべてのメッセージをスローする理由は何ですか?
php - PHP 通知の抑制; 特定の状況/方法のみ
tl;dr - 非常に厳格な環境で作業しているときに PHP のエラー報告レベルを管理する効果的な方法はありますか?
大丈夫; まず、「エラー抑制」が解決策になるとは思いません。私 (私は合理的に確信しています) は、エラー抑制演算子を使用したことがなく、使用する@
つもりもありません。私はset_error_handler()
and ErrorException
(または の何らかの派生error_reporting(-1)
) を利用し、 (将来の証明E_ALL | E_STRICT
)で開発します
今、私はこれらの習慣を変えたくありません。なぜなら、それらは素晴らしい習慣だと思うからです (また、私の開発/生産環境の設定/実践をさらに改善するための提案があれば、私はすべて耳を傾けます)
ただし、ビューの生成に関しては、これは少し面倒です。何らかの理由でコントローラーが特定のデータをビューに渡すことができない場合、正しいデータ (配列インデックス、変数など) が常に利用できるとは限りません。このデータがビューの生成に重要でない限り、ビューは引き続きレンダリングされます。
冗長ではありませんが(私は思う)非常に理解しやすいので、私はむしろこの構文が好きです:
もちろん、インデックスがない状態で が$data['field']
呼び出さoffsetGet()
れていない場合は、問題があります。null
例外を満たす、例外を満たすスクリプトの失敗に注意してください。
ノードのようなクラスを使用してデータ ツリーを作成し、ビューに渡されるデータのリスト/行を管理するなど、さまざまな実装を試しました。__get()
実際には存在しないノードを(割り当てまたはアクセス時に)作成します(ノードデータの割り当てを簡素化し、通知の発行を防ぐため。有効性についてテストされ、適切に返されますが)ノードデータにアクセスするためにも実装され、単純に欠落しているインデックスを返します。__isset()
false
ArrayAccess
null
PHP の魔法のオーバーヘッドのために、この実装を放棄することにしました (ただし、リファクタリング/最適化とプロファイリングについては多くのことを学びました) 。
代わりにネイティブ配列を使用しましたが、現在、私のビューのコードベースには が散らばっていますisset()
。率直に言って、それはただイライラするだけです (前述の実装のパフォーマンス損失よりもほとんど多く) 。
今、最も簡単な修正はerror_reporting()
、スクリプト内の位置に基づいてノッチを上下にスライドさせることだと考えていました。
しかし、それは最もクリーンな (または最も安全な) 修正とは思えません。特にヘルパー関数がビュー内で呼び出される場合。私は一種の HMVC アプローチを採用しており、サブリクエストはビューから発行できるため、すべてのrender()
エスケープポイントを見つけて で保護する必要がありますerror_reporting(-1)
。
他に選択肢はありますか?
php - PHP通知エラーのログ
最近、レガシーシステムの開発を引き継ぎE_NOTICE
、デプロイメント環境でPHPのロギングをオンにできるようにしたいと考えています。デプロイメント環境iniには、次のディレクティブがあります。
error_reporting
を使用してビットマスクを比較しましたがecho (E_ALL & ~E_DEPRECATED).' = '.error_reporting();
、両方が一致しているためerror_reporting
、システム自体のレベルは変更されておらず、回転するとdisplay_errors = On
通知が表示されますが、ログには記録されません。
では、どうすればPHPのロギングを開始できE_NOTICE
ますか?
php - 未定義の変数:$ _ SESSION
E_NOTICE
設定されていないセッションまたは設定されていないセッションを参照しようとすると、コアCakePHPファイルでエラーが発生します()cake/libs/cake_session.php line 372
:
$_SESSION
(app /ディレクトリ内の)コードを検索しましたが、またはへの参照が見つかりませんsession_destroy
。私は何かが足りないのですか?
このエラーは、単体テストを実行しようとすると表示されます。これは...正常ですか?cake/
コアファイルの内容を誤って変更していないことを確認するために、ディレクトリをクリアして別のディレクトリ(同じバージョン)に置き換えましたが、それでも同じエラーが発生します。これがフレームワークの欠陥なのか、それとも他の何かなのかはわかりません。
編集
コマンドラインで実行したテストの結果は次のとおりです。
php - PHP の通知を取り除く方法: Undefined index: HTTPS の X の 123 行目
2 つの同じファイルに起因するこれらのエラーが何千もあることがわかりました。
を使用して多くのエラーisset
を削除しましたが、最後の 2 つのエラーを削除する方法がわかりません。多分あなたたちは私を助けることができます。
エラーを生成する最初の PHP ファイルのコード:
より正確には、この行:
と
php - 配列内の未定義変数に E_NOTICE はありませんか?
$array = array();
だから..次のような変数を使用して配列を作成し、手動で変数を設定するとき、私はまだこれに混乱しています:
PHP でこれを実行しても問題ないことはわかっていますが、次のような$array['none']
ことをエコーすると、未定義の変数に対して E_NOTICE が表示されません。
誰かが私を説明できますか、なぜですか?
php - PHP の通知/警告を発生させずに stdObject の配列をループするにはどうすればよいですか?
cURL / json_decode() を介して取得した次の stdObject があります。
各結果の ID を取得するためにループしています。
コードは正常に動作していますが、PHP は次の通知/警告を表示しています。
PHP Notice: 行 1 の /var/www/vhosts/domain.net/script.php で非オブジェクトのプロパティを取得しようとしています PHP Notice: /var/www/vhosts/domain で非オブジェクトのプロパティを取得しようとしています。行 1 の net/script.php PHP 警告: 行 1 の /var/www/vhosts/domain.net/script.php の foreach() に無効な引数が指定されました
何か案は?前もって感謝します!