2009-08-31 7 views
1

私は多少問題を絞り込んだ。 "error_log('hey');"をコマンドラインから実行すると、STDOUTにダンプされます。しかし、Webインターフェイス(Apache)から同じコードを実行すると、エラーログにエラーが記録されます。 私は両方のiniファイル、Apacheが使用しているものと/ private/etc(私はMAMPを実行しているMac)をチェックしました。どちらのerror_log変数もまったく同じ場所を指しています。それはブラウザであるよう そして、私は実行php.iniの間違った設定

echo ini_get('error_log'); 

値は、コマンドライン上で同じです。 ここで設定されているini設定は何ですか?エラーロギングだけでなく、より多くのことが壊れているので、これはかなり面倒です。/

答えて

0

あなたはおそらく、次の設定ファイルを編集する必要があります:私が同様のパスを含める影響だ

/Applications/MAMP/conf/php5/php.ini 

MAMPはそれがポート8080あなたのデフォルトの実行により、おそらく有効にする独自のApacheサーバ、です使用しています「システム環境設定」 - >「共有」でApacheサーバーをオフにします。

また、含むPHPファイルを実行してみてください:

<?php phpinfo(); ?> 

は、これは実際にはApacheによって読まされているphp.iniのことを教えてくれます。

will

1

何を達成しようとしていますか? Apache内でstderrはerror_logに入ります... error_log()function documentationは、デフォルトでサーバーのエラーログに記録することを示しています。別の宛先にログインする場合は、message_typedestinationのパラメータを使用します。

0

関連するini設定はdisplay_errorsです。

コマンドラインから、Onの値は、エラーをSTDOUTにダンプします。 stderrはそれらをSTDERRに転用し、Offはそれらを抑制する。 Apacheの場合はOnOffが意味を持ちます。

Apacheのiniファイルはdisplay_errors = Off、/ private/etcのものはdisplay_errors = Onです。

error_logディレクティブはPHPにエラーをどこに記録するかを指示しますが、log_errorsOnに設定する必要があります。それ以外の場合は効果がありません。 (やはり、/ private/etcのiniファイルにはlog_errors = Offというチャンスがあります。)

0

コンソールにerror_logが表示され、ログファイルに表示されない理由は、アクセス許可の問題が原因である可能性があります.MacOSは実際にはわかりませんが、UNIXベースのため、 :アパッチで使用

  • ログファイルには、コンソールからスクリプトを実行している場合、あなたはそのユーザーではありません
  • 特定のユーザーに属している、とあなたは、ログファイルへの書き込みアクセス権を持っていない

ログファイルにログできない場合は、error_logがwrittingしているとしますエラーの標準出力(stderr)に出力されます。これは一般的にコンソールです。それは ログ・ファイルに書き込むことができない場合は標準エラー出力にそのPHPのログを思わ

:マニュアルのページ


This commentは(引用)これはあなたの問題の原因である可能性がありますを示しているように思われます。コマンド 行PHPは ログファイルが(通常)ウェブサーバによって書かれた であるため、stderrに戻ります。また


log_errorsdisplay_errorsが正しくCLIで使用php.iniファイルに設定されていることを確認します

あるいはlog_errorsブール

をするかどうか、スクリプトエラーメッセージを伝えます は、サーバーのエラー ログまたはerror_logに記録する必要があります。このオプションは、サーバー固有の です。

そして:

はdisplay_errors文字列

これは、エラーが 出力の一部として、または、彼らはから を非表示にする必要がある場合は、画面に印刷する必要があるかどうかを決定しますユーザー。

値 "stderr"は、stdoutの代わりに stderrにエラーを送信します。

関連する問題