web-dev-qa-db-ja.com

PHP組み込みサーバーエラーログの場所

あるかわかりませんか?しかしphpはWebサーバーに組み込まれていて、そのエラーログをファイルに保存していますか? Apacheで仮想ホストを作成するときのように、テーリングの目的で。

更新:私はMac OSXを使用しています

16
Bryan Estrito

組み込みのウ​​ェブサーバーはデフォルトではどこにもログを記録しないため、これをカスタマイズするには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()呼び出しは、指定したファイルに記録されます。

21
thenickdude

はい、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

9
Pupil

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)。

2
kenorb

Mac OS X High Sierra(10.13.5)のために更新するには、これは私にとってはうまくいきましたPHPデフォルトを変更する必要はありません。

error_log('*** notice this***');

そしてエラーログをテールします:

tail -f /var/log/Apache2/error_log
1
dhc

私は主に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については学習しませんでしたが、私が言う出力のリダイレクトについては学習しました。無数のアプリケーションでのはるかに重要な概念です。

0
3lit3h4XX0r666