web-dev-qa-db-ja.com

PHP admin-ajax.phpからのエラーを表示する

/wp/wp-admin/admin-ajax.php?action=some_actionを介してアクセスする、さまざまなことを実行するいくつかのカスタムエンドポイントを設定しました

ただし、構文、論理、致命的など、開発中のエラーが発生すると、「500内部サーバーエラー」が発生します。

エラーが発生すると、サイトの他のすべてのページでPHPエラーが発生します。

次に、エラーを確認するためにPHPログファイルを開く必要があります。

wordpressにこれらのURLでのエラーの表示を無効にする何かがありますか?ある場合、どのようにこれを防止して、ブラウザでエラーのレンダリングを許可できますか?

5
Owen

WordPressはデフォルトでajaxリクエスト呼び出しのエラーを非表示にします。これは、ソースファイル _wp-includes/load.php#L352_ から確認できます。ここ:

_if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'WP_INSTALLING' ) && WP_INSTALLING ) || wp_doing_ajax() ) {
    @ini_set( 'display_errors', 0 );
}
_

関数wp_doing_ajax()が条件ステートメントで使用されているため、_display_errors_が設定されていることを確認してください。

これを回避するには、 @ Friss で提案されているように、ajax関数呼び出しの上部でエラー報告を手動でオンにする必要があります。

3
Rahil Wazir

これらの2行をツアースクリプトファイルの一番上に追加してみてください。

error_reporting(E_ALL); 
ini_set("display_errors", 1);

これは、あらゆる種類のエラーを報告するようにphpに指示し、デフォルトの設定を上書きして表示します。

0
Friss

あなたはWP_Ajax_Responseを試すことができます

$response = array(
   'what'=>'stuff',
   'action'=>'delete_something',
   'id'=>new WP_Error('oops','I had an accident.'),
   'data'=>'Whoops, there was a problem!'
);
$xmlResponse = new WP_Ajax_Response($response);
$xmlResponse->send();

続きを読む https://codex.wordpress.org/Function_Reference/WP_Ajax_Response

0
codiiv