34

ここで何が間違っていますか?

.ini ファイルに error_log を .ini ファイルと共に設定していますerror_reporting = E_ALL | E_STRICT

他に何が欠けていますか?これは通常私にそれを与えました。これをスクリプトではなく、.ini ファイルに設定したいのです。

発生しているもう 1 つの興味深いことは、スクリプトの 1 つで意図的にエラーをスローしようとすると、Apache が何度も再起動することです。


これは、1 つのエラーが発生した後のイベント ログです。タイムスタンプを見てください。

Wed Nov 04 19:34:23 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:23 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:23 2009] [notice] Parent: Created child process 1700
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Child process is running
[Wed Nov 04 19:34:23 2009] [notice] Child 3008: Released the start mutex
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Acquired the start mutex.
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Starting 64 worker threads.
[Wed Nov 04 19:34:23 2009] [notice] Child 1700: Starting thread to listen on port 80.
[Wed Nov 04 19:34:24 2009] [notice] Child 3008: All worker threads have exited.
[Wed Nov 04 19:34:24 2009] [notice] Child 3008: Child process is exiting
[Wed Nov 04 19:34:53 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:53 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:53 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:53 2009] [notice] Parent: Created child process 3656
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Child process is running
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Acquired the start mutex.
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Starting 64 worker threads.
[Wed Nov 04 19:34:53 2009] [notice] Child 3656: Starting thread to listen on port 80.
[Wed Nov 04 19:34:53 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:54 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:54 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:54 2009] [notice] Parent: Created child process 3980
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Child process is running
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Acquired the start mutex.
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Starting 64 worker threads.
[Wed Nov 04 19:34:54 2009] [notice] Child 3980: Starting thread to listen on port 80.
[Wed Nov 04 19:34:54 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:54 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:54 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:54 2009] [notice] Parent: Created child process 1600
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Child process is running
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Acquired the start mutex.
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Starting 64 worker threads.
[Wed Nov 04 19:34:54 2009] [notice] Child 1600: Starting thread to listen on port 80.
[Wed Nov 04 19:34:55 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:55 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:55 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:55 2009] [notice] Parent: Created child process 1068
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Child process is running
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Acquired the start mutex.
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Starting 64 worker threads.
[Wed Nov 04 19:34:55 2009] [notice] Child 1068: Starting thread to listen on port 80.
[Wed Nov 04 19:34:55 2009] [notice] Parent: child process exited with status 128 -- Restarting.
[Wed Nov 04 19:34:55 2009] [notice] Apache/2.2.14 (Win32) PHP/5.3.0 configured -- resuming normal operations
[Wed Nov 04 19:34:55 2009] [notice] Server built: Sep 28 2009 22:41:08
[Wed Nov 04 19:34:55 2009] [notice] Parent: Created child process 3220
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Child process is running
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Acquired the start mutex.
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Starting 64 worker threads.
[Wed Nov 04 19:34:56 2009] [notice] Child 3220: Starting thread to listen on port 80.

これは 1000 回尋ねられており、これを投稿する前にさまざまな投稿を閲覧しましたが、答えが見つかりませんでした. 私が PHP でプログラミングをしている限り、これは常に悪夢でした。

4

15 に答える 15

11

log_errors = Onファイルphp.iniにも設定する必要があります。

于 2009-11-05T02:54:03.493 に答える
9

他の誰かがローカル開発環境でエラーをログに記録するのに問題がある場合は、次のように修正しました。

Windows では、機能error_logするためにログへの完全なパスに設定する必要がありますerror_log()( error_log = c:\apache\php_errors.log)。ただし、error_log = php_errors.logパスがない場合でも、php は次のような起動エラーをログに記録できます。

PHP の起動: 動的ライブラリ 'ext\php_mysqli.dll' を読み込めません - 指定されたモジュールが見つかりませんでした

于 2012-11-13T22:20:25.800 に答える
9

Flimm のトラブルシューティング ガイド

error_log()通話が機能しない場合のトラブルシューティング ガイドを次に示します。

  1. サーバーの構成を調べて、デフォルトのエラー ログ ファイルがどこにあるかを確認します。これは、使用しているサーバーによって異なります。開始するには、Apache を使用している場合は Apache のErrorLogオプションを、Nginx を使用している場合はNginx のerror_logオプションを確認してください。ファイルに設定されていることを確認してください。Valet などのツールを使用している場合は、バックグラウンドで Nginx などのサーバー ソフトウェアを使用していることに注意してください。

  2. サーバーのエラー ログ ファイルの権限を確認してください。Unix ライクなシステムでは、適切なユーザーとグループによって書き込み可能である必要があり、親ディレクトリとそのすべての祖先のアクセス許可も適切である必要があります。とを使用chmodchownます。

  3. ファイル内の PHP.iniの構成を確認してください。具体的には、log_errors = Onおよびerror_reporting = E_ALL | E_STRICTを確認してください ( 、および構成設定error_log = /tmp/example/php_errors.logについてはドキュメントを参照してください)。ファイルを見つけるには、 の出力を調べます。が設定されていない場合、デフォルトでは、前の手順で説明したサーバーのエラー ログに移動します。がファイルに設定されている場合は、前の手順と同様に、既に存在し、書き込み可能である必要があります。構成の変更後は、忘れずにサーバーを再起動してください。log_errorserror_reportingerror_log.iniphpinfo();error_logerror_log

  4. PHP の設定がサーバー構成によって変更されていないことを確認します。サーバーの構成 (でさえも.htaccess) は、PHP 構成設定を変更する可能性があります。Apache では、これはphp_admin_valueand php_admin_flag( docs ) を使用して行われます。たとえば、.htaccessファイルで次の行を見つけることができます: php_admin_flag[log_errors] = off. 構成の変更後は、忘れずにサーバーを再起動してください。この時点でtest.php、コンテンツを含むテスト ファイルを作成し<?php error_log("test");、サーバーを再起動して、ブラウザーで URL を開くことができるはずですtest。エラー ログ (サーバーの、またはによって指定されたもの) で確認できるはずです。 error_log = )。しかし、読み続けてください。

  5. 実行時に PHP の設定が変更されていないことを確認します。このlog_errorsオプションは、実行時に を実行することで変更できます。またini_set('log_errors', 1);、他の構成オプションerror_reportingおよびも変更できますerror_log。また、実行時に構成を変更する特別なerror_reporting()PHP 関数があることにも注意してください。ini_setまたはの呼び出しをコードベースで検索しますerror_reporting。たとえば、WordPress は の値に応じてこれらを実行しますWP_DEBUG

その他の確認事項: SELinux でパーミッションの問題が発生している可能性があります (この回答を参照してください)。

于 2018-11-08T11:16:16.600 に答える
8

私が遭遇した問題は、私が指定したエラーログが書き込み保護されていることでした。私の.htaccess設定はすべて正しいのですが、PHPには権限がなかったため、エラーログに書き込むことができませんでした。これは私のためにそれを正しく修正しました:

chmod 777 watermellon-app-errors.log

明らかに、.logの部分をログに使用しているファイルに変更する必要があります。

于 2012-10-08T18:58:19.650 に答える
4

error_logディレクティブが設定されている場合、ファイルは PHP エラーの記録に使用されます。設定されていない場合、エラーは Apache ログに記録されます。error_logを見てください。

error_log ファイルとそのディレクトリは、Apache を実行しているユーザーが書き込み可能である必要があります。ファイルが作成されていない場合は、おそらく権限の問題が原因です。

Apache がクラッシュする理由はよくわかりませんが、何らかのアクセス許可の問題だと思います。

于 2009-11-18T08:04:23.853 に答える
1

理由はわかりませんが、エラー ログが機能するようになりました。これが私がしたことです。

あきらめてerror_logディレクティブをコメントアウトし、ini ファイルを閉じました。Apache がまだクラッシュするかどうかを確認するために解析エラーを使用してスクリプトを実行したところ、ログ ファイルに PHP エラーが記録されました。ini ファイルでerror_logが有効になっておらず、スクリプトがini_set()を使用していないため、これは異常です。

于 2009-11-05T04:24:45.977 に答える
0

error_log = "C:\php\Log\error.log"回線も機能していませんでした。私にとっての解決策は、 error.logを自分で作成しないことでした。PHP が作成してくれるからです。PHP メッセージ ボード を参照してくださいWindows Server 2008サーバーで PHP 5.2 を使用しています。

于 2011-07-28T08:50:01.480 に答える
0

bradymが言ったように、ApacheユーザーのPHPエラーログがあるディレクトリへの書き込み権限があるかどうかを確認してください。書き込み権限のあるログ ファイルを作成した場合、それだけでは十分ではありません。ディレクトリにもそれらが必要です。

于 2010-12-10T14:44:45.123 に答える
-1

これは私にとってはうまくいきました。

setsebool -P httpd_unified 1

最初に試すには、以下の方法が推奨されることに注意してください。

semanage fcontext -a -t httpd_sys_rw_content_t 'errorLogNameHere.error.log
restorecon -v 'errorLogNameHere.error.log'

この回答は、次のコマンド ラインを実行したときのログから導き出されました。

journalctl -xe

私が実行していたシステムに関する詳細情報:

PHP 7.0 およびCentOS 7

明らかでないかどうかはわかりませんが、問題はファイルを書き込むためのApacheの構成でした。ログディレクトリでchmod 777、 chmod a+w を試しましたが、うまくいきませんでした。

于 2017-11-12T08:59:01.340 に答える