あるかわかりませんか?しかしphpはWebサーバーに組み込まれていて、そのエラーログをファイルに保存していますか? Apacheで仮想ホストを作成するときのように、テーリングの目的で。
更新:私はMac OSXを使用しています
組み込みのウェブサーバーはデフォルトではどこにもログを記録しないため、これをカスタマイズするにはphp.iniを提供する必要があります。たとえば、次の内容でphp.iniというファイルを作成したとします。
error_log = /Users/me/test.log
log_errors = on
date.timezone = UTC
次に、次のようにPHPの組み込みWebサーバーを起動できます。
php -S 127.0.0.1:8080 -c php.ini
そして、error_log()呼び出しは、指定したファイルに記録されます。
はい、PHPにはエラーログ機能が組み込まれています。
PHPはこのファイルにエラーを自動的に記録します。
エラーをログに記録する場合は、関数 error_log() を使用します
ファイルの場所は、環境によって異なります。
例えば.
ubuntu 12.04では、
var/log/php_errors.log
XAMPPウィンドウでは、
\xampp\php\logs\php_errors.log
Mac OSでは、
/var/log/Apache2/php_errors.log
PHP macOSの組み込みサーバーを使用する場合、error_log
構成ファイル(php.ini
)でphp -i | grep php.ini
を指定する必要があります。
次のようなsyslog
で(ログファイルの代わりに)決定した場合
error_log = syslog
次に、ログをダンプするには、macOSでlog
コマンドを使用できます。
log stream --predicate 'processImagePath contains "php"'
それ以外の場合は、エラーログに特定のファイルパスを使用します(例:/usr/local/var/log/php-error.log
)。
Mac OS X High Sierra(10.13.5)のために更新するには、これは私にとってはうまくいきましたPHPデフォルトを変更する必要はありません。
error_log('*** notice this***');
そしてエラーログをテールします:
tail -f /var/log/Apache2/error_log
私は主にLinuxを知っていますが、これはphpを実行できるどのシステムでも同じように機能します。私は最近、2009年から「時代遅れ」のMacminiでLinuxを実行するのに不合理な時間を費やしました。 Android残念ですが、「Linuxベース」のナンセンスを隠しています。それを理解するのに何人の弁護士が必要だったのでしょうか?もちろん、GPLはハードウェアについて何も述べていません!彼らのおかげで、今後10年間でモバイルデバイスが必然的にラップトップやデスクトップに取って代わると、フリーソフトウェアの背後にあるアイデアの脅威はほとんど排除されます。彼らはそのようなエンジニアリングを行う必要があります 消費者の煙警報技術 。
とにかく、それで十分です。私はトピックに戻って、これを行う方法を教えて、将来的に同様の異なるタスクを完了するためのツールを提供できるようにしようと思います。 「魚に人に教えると魚を売れなくなる」という古い格言のようなものです
私はいつもman [command]
または[command] --help
で始めるのが好きです。--help
または-h
が機能しない場合は、無効な入力を渡してみてください。このステップでは注意してください。manページを数時間読み続けるのは簡単です。自分が抱えている可能性のある義務を忘れないようにしてください。
php --help
Ini変数を設定するオプションを見つけます。
-d foo[=bar] Define INI entry foo with value 'bar'
例[php.ini
]を読むと、興味のある設定が見つかります。
; error_reporting
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
///
; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog
他のすべてのデフォルトは大丈夫に見えるので...試してみましょう:
php -d error_reporting=E_ALL -d error_log=/desired/path/to/error.log -S 0.0.0.0:9999
ここからstderr
へのログ出力に気付くでしょう。 または、上記のコマンドの最後に2> /path/to/error.log
を追加して、リダイレクトすることもできます 。より単純ですが、php.iniから値を設定する-d
オプションとカスタムファイルを使用する-c
については学習しませんでしたが、私が言う出力のリダイレクトについては学習しました。無数のアプリケーションでのはるかに重要な概念です。