1888

PHP ini ファイル ( php.ini) をチェックしたところ、display_errors設定されており、エラー報告も ですE_ALL。Apache ウェブサーバーを再起動しました。

これらの行をスクリプトの先頭に配置しましたが、単純な解析エラーもキャッチしません。たとえば、変数を a"$"で宣言し、ステートメントを閉じません";"。しかし、すべてのスクリプトでこれらのエラーに関する空白のページが表示されますが、ブラウザーの出力で実際にエラーを確認したいと考えています。

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

やるべきことは何ですか?

4

30 に答える 30

3416

これは常に私にとってはうまくいきます:

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

ただし、これによって PHP が解析エラーを表示するわけではありません。これらのエラーを表示する唯一の方法は、php.ini を次の行で変更することです。

display_errors = on

( にアクセスできない場合はphp.ini、この行を入れてもうまくいく.htaccessかもしれません):

php_flag display_errors 1
于 2014-01-29T11:25:17.323 に答える
159

実行時にエラー出力を有効にすると、解析エラーをキャッチできません。これは、実際に何かを実行する前にファイルを解析するためです (この間にエラーが発生したため、何も実行されません)。display_errors がオンになり、適切な error_reporting レベルが使用されるように、実際のサーバー構成を変更する必要があります。php.ini にアクセスできない場合は、サーバーによっては .htaccess などを使用できる場合があります。

この質問は、追加情報を提供する場合があります。

于 2009-06-27T19:14:17.680 に答える
150

php.ini内:

display_errors = on

次に、Web サーバーを再起動します。

于 2013-01-08T09:27:35.727 に答える
103
于 2014-01-29T09:52:43.207 に答える
53

一部の Web ホスティング プロバイダーでは、.htaccessファイル内の PHP パラメータを変更できます。

次の行を追加できます。

php_value display_errors 1

私はあなたと同じ問題を抱えていましたが、この解決策はそれを修正しました。

于 2013-05-18T15:01:34.083 に答える
35

これはうまくいきます:

<?php
     error_reporting(E_ALL);
     ini_set('display_errors', 1);    
?>
于 2014-05-05T13:23:31.893 に答える
34

使用する:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

これが最適な記述方法ですが、構文エラーにより空白の出力が返されるため、コンソールを使用して構文エラーを確認してください。PHP コードをデバッグする最良の方法は、コンソールを使用することです。以下を実行します。

php -l phpfilename.php
于 2016-05-04T19:14:09.630 に答える
16

私は通常、プレーンな PHP プロジェクトで次のコードを使用します。

if(!defined('ENVIRONMENT')){
    define('ENVIRONMENT', 'DEVELOPMENT');
}

$base_url = null;

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'DEVELOPMENT':
            $base_url = 'http://localhost/product/';
            ini_set('display_errors', 1);
            ini_set('display_startup_errors', 1);
            error_reporting(E_ALL|E_STRICT);
            break;

        case 'PRODUCTION':
            $base_url = 'Production URL'; /* https://google.com */
            error_reporting(0);
            /* Mechanism to log errors */
            break;

        default:
            exit('The application environment is not set correctly.');
    }
}
于 2017-02-01T07:16:23.143 に答える
14

何らかの方法で設定を変更できない状況に陥った場合、php.iniまたは.htaccessPHP スクリプトに解析エラーが含まれているときにエラーを表示することができなかった場合。次に、次のようにコマンドラインでファイルを lint することを解決する必要があります。

find . -name '*.php' -type f -print0 | xargs -0 -n1 -P8 php -l | grep -v "No syntax errors"

ホストが非常にロックダウンされているため、php.iniまたはを使用して値を変更できない場合は、 を使用して値を.htaccess変更することもできない場合がありますini_set。次の PHP スクリプトで確認できます。

<?php
if( !ini_set( 'display_errors', 1 ) ) {
  echo "display_errors cannot be set.";
} else {
  echo "changing display_errors via script is possible.";
}
于 2016-01-11T12:11:27.913 に答える
2
     error_reporting(1);
     ini_set('display_errors', '1');
     ini_set('display_startup_errors', '1');
     error_reporting(E_ALL);

これをあなたのページの一番上に置いてください。

于 2021-02-28T00:51:33.803 に答える
1

これをコードの先頭に入力します

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

そしてphp.iniファイルに、これを挿入します:

display_errors = on

これはうまくいくはずです。

于 2021-08-23T21:22:31.543 に答える
1

Unix CLIでは、エラーのみをファイルにリダイレクトすることが非常に実用的です。

./script 2> errors.log

スクリプトから、var_dump()通常どおりまたは同等のものを使用します (STDOUT と STDERR の両方が出力を受け取ります) が、ログファイルにのみ書き込みます。

fwrite(STDERR, "Debug infos\n"); // Write in errors.log^

次に、ライブ変更のために別のシェルから:

tail -f errors.log

または単に

watch cat errors.log
于 2019-11-26T02:28:30.037 に答える