したがって、現在のWebページには実際にはエラーはありませんが、HTTP 500エラーページの代わりに、ポップアップ時にエラーを表示できるようにしたいのです。私は少しグーグルで検索し、これらの2行を追加するとすべてが修正されると考えました。
ini_set('display_errors', 'On');
error_reporting(E_ALL);
注:学校のアカウントのサーバーを使用しているため、php.iniファイルにアクセスできません。
そこで、ページの上部にそのようなバグ($ buggyの後にセミコロンなし)を導入しました。
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$buggy
$x = 4 + 2;
...
ただし、サーバーエラーが表示されるだけです。
「Webサイトで http://mywebpage.com/ の取得中にエラーが発生しました。メンテナンスのためにダウンしているか、正しく設定されていない可能性があります。」
何か案は?
編集:
コードを再構成しました:
<?php
include_once 'database/errorSettings.php';
?>
<?php
$buggy // whoops
$x = 4 + 2;
...
errorSettings.phpは次のとおりです。
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>
しかし、それはまだ機能しません...再構成する間違った方法?
あなたが持っているのは解析エラーです。これらは、コードが実行される前にスローされます。 PHPファイル内のコードを実行する前に、ファイル全体を解析する必要があります。エラーレベルを設定しているファイルに解析エラーがある場合、ファイルは解析されません。エラーがスローされるまでに有効になります。
1つのファイルでエラーレベルを設定し、実際のコード(およびエラー)を含む別のファイルをinclude
ingするなど、ファイルを小さな部分に分割するか、エラーレベルをPHP php.iniまたは.htaccessディレクティブを使用します。
.htaccessファイルにerror_reporting値を設定する必要があります。解析エラーがあるため、PHPコードでerror_reporting()関数を実行することはありません。
.htaccessファイルでこれを試してください(使用できる場合):
php_flag display_errors 1
php_value error_reporting 30719
30719はE_ALLに対応すると思いますが、間違っている可能性があります。
アップデートの編集:http://php.net/manual/en/errorfunc.constants.php
int error_reporting ([ int $level ] )
---
32767 E_ALL (integer)
All errors and warnings, as supported, except of level E_STRICT prior to PHP 5.4.0. 32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously
上記のdecezeが言ったことに加えて。これは解析エラーです。解析エラーをデバッグするには、debugSyntax.phpという名前のルートに新しいファイルを作成します。これを入れてください:
<?php
/////// SYNTAX ERROR CHECK ////////////
error_reporting(E_ALL);
ini_set('display_errors','On');
//replace "pageToTest.php" with the file path that you want to test.
include('pageToTest.php');
?>
DebugSyntax.phpページを実行すると、テストすることを選択したページからの解析エラーが表示されます。
PHPファイルの上に次のコードを書くだけです:
ini_set('display_errors','on');
Codeigniterを使用している人(私はC3を使用しています):
Index.phpファイルはphp.ini設定を上書きするため、index.phpファイルの68行目:
case 'development':
error_reporting(-1);
ini_set('display_errors', 1);
break;
このオプションを変更して、必要なものを設定できます。完全なリストは次のとおりです。
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
それが役に立てば幸い。
構文エラーは外部サーバーでは簡単にチェックされず、実行時エラーだけがチェックされます。
私がやること?あなたと同じように、私は
ini_set('display_errors', 'On');
error_reporting(E_ALL);
ただし、実行する前に、オンラインのPHP構文チェッカーを使用して、PHPファイルで構文エラーをチェックします。
最高の私見は PHPコードチェッカー
すべてのソースコードをコピーし、メインボックス内に貼り付けて、Analyze
ボタンをクリックします。
これは最も実用的な方法ではありませんが、2つの手順は補完的であり、問題を完全に解決します
PHP5.4およびPlesk 11.5を使用しているときにこの問題が発生しました
どういうわけか、Pleskドメイン設定ページのエラー報告とエラー設定の表示は、.htaccessまたはPHPスクリプトのローカル設定を完全に上書きしていました。これを防ぐ方法は見つかりませんでした。 Plesk設定を使用して、エラー報告のオンとオフを切り替えます。
Php.iniに設定があり、ローカルサイトがこれらの設定を上書きするのを防ぐことができます。おそらく、サーバーで使用されるコントロールパネルによって強制されます。