PHPはエラーログをどこに保存しますか?(php5、apache、fastcgi、cpanel)


392

私は共有ホスティングを利用しており、Cpanel、Apache、PHPはfastcgiによって実行されています。PHPはエラーログをどこに保存しますか?

error_logファイルを探すためにサイト構造全体を経由する代わりに、共有ホスティング環境でエラーログを見つけることができる他の方法はありますか?

php.ini(PHPバージョン5.2.16を使用しています)にアクセスできます。


25
Linuxでは、/var/log/httpd/error_logまたは/var/log/apache2/error.log。これらのファイルはrootが所有しているため、rootであるか、それsudoを表示または読み取るにはを使用する必要があります。
Eric Leschinski、2014

112
php --info | grep error
sjas 2014

8
Windowsソリューションをお探しの方は、を使用php --info | findstr /r /c:"error_log"してログファイルの場所を確認してください。
ブーム

1
それは私にとってかなり奇妙です...私はウェブサイトをホストしていて、PHPログはApacheログと同じファイルに保存されています...私の管理パネルのログには、クリックすると完全なApacheエラーログを表示するオプションがあります、たとえば、ユーザーが立ち入り禁止の場所に入る際のエラーがあります。しかし、同じファイルにPHPが示したエラーもあります。
RedClover 2017年

fastcgiを使用している場合、@ soaku apache自体はPHPを実行しません。Apacheモジュールであるmod_phpを使用する場合、Apacheはphpを処理します。つまり、mod_phpを使用するとエラーがapacheログに記録される可能性がありますが、cgiまたはfastcgiを使用する場合はそうではありません
Gall Annonim

回答:


314

PHP /var/log/apache2がapache2モジュールの場合、PHPはエラーログを保存します。共有ホストは、多くの場合、ルートディレクトリの/logサブフォルダーにログファイルを格納しています。しかし... php.iniファイルにアクセスできる場合、これを行うことができます:

error_log = /var/log/php-scripts.log

rinogoのコメントによると:cPanelを使用している場合、おそらく探しているマスターログファイルは(デフォルトで)次の場所に保存されます。

/usr/local/apache/logs/error_log

他のすべてが失敗した場合は、使用してログファイルの場所を確認できます

<?php phpinfo(); ?>

20
「phpがapache2の場合、phpは/ var / log / apache2にエラーログを保存します」RHELなどではなく、パッケージ名は「httpd」です。パッケージの名前がディストリビューション全体で一貫しているとは、誰も想定できません。
chelmertz 2013年

28
Google社員への/usr/local/apache/logs/error_log
参考情報-cPanel

5
の 'error_log'セクションをチェックし<?php phpinfo(); ?>てパスを確認してください
doub1ejack

apache2モジュールでない場合はどうなりますか。たとえば、nginxで実行されているdebianのfpmパッケージである場合があります。
n611x007 2015

2
phpinfoセクションのどこに表示されますか?error_logで、キー/値について私が見るすべては「error_log」であり、実際のパスはありません
Robert Sinclair

86

phpinfo()「error_log」を試して確認してください


13
それはちょうど言うERROR_LOGなかっ指定なしパスを。多分それは共有ホスティング環境にあるからだと思います。それにアクセスできれば、他のすべてのサイトのエラーが表示されるでしょう。
PHPLOVER

8
@PHPLOVERを試しても同じことが言えますecho ini_get('error_log');か?
chelmertz、2011

私はそれを試しませんでしたが、php.iniファイルで同じことを言ったので、php.iniファイルのパスを変更し、それが機能しているかどうかを確認しました。エラーをログに記録するようにパスを変更しましたが(ドキュメントルートの外で)、すべてのエラーを記録しますか?phploverに感謝
PHPLOVER

2
@PHPLOVER:あなたは簡単に設定して報告レベルを制御することができerror_reporting(E_ALL|E_STRICT);se.php.net/manual/en/function.error-reporting.php
chelmertz

3
鉱山はerror_logも言います、それを探す場所がわかりません。これはグーグルでnrの1をヒットしますが、それには答えません。
HMR 2014年

54

Linux

php --info | grep error 

端末はエラーログの場所を出力します。

ウィンドウズ

php --info | findstr /r /c:"error_log"

コマンドプロンプトはエラーログの場所を出力します

ログの場所を設定するには

を開きphp.ini、次の行を追加します。

error_log = /log/myCustomLog.log

ありがとう@chelmertez@Boomこれらのための(質問のコメント)。


5
Linux上のim。ここでは、ログの場所については触れていません。
Sirex 2016年

1
@Sirexはphp -info何かを出力しますか?php実際にPHPを呼び出して実行することを確認する必要があります...
Cullub

1
また、phpが現在何もログに記録していない可能性もあります。その場合は、を開いてphp.iniに設定error_reportingE_ALL & ~E_DEPRECATED & ~E_STRICTたり、表示したいエラーがあれerror_logば、エラーを記録するディレクトリへのパスを設定します。(注:これはファイルへの絶対パスではなく、ディレクトリへのパスです。)
Cullub

1
私は/ var / log / httpd /で古いログを見つけただけで、ほとんどの人が見ることを勧めていますが、実行するphp --info | grep logと、最新のログが置かれている/ var / www / logsにポイントされました。
ChrisBob 2017

1
ログの場所を設定すると、Apacheの再起動することを忘れないでください:sudo /etc/init.d/apache2 restart
BrianHenryIE

31

LAMP環境では、phpエラーはデフォルトで以下のファイルに送られます。

/var/log/httpd/error_log

すべてのアクセスログは次のとおりです。

/var/log/httpd/access_log

phpエラーログファイルの仕様をコメントアウトしてください。
ユーザー

17

LinuxでPHPエラーログを見つける方法:

eric@dev /var $ sudo updatedb
[sudo] password for eric:
eric@dev /var $ sudo locate error_log

/var/log/httpd/error_log

別の同等の方法:

eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null

/var/log/httpd/error_log

12

デフォルトでは、php どこにもエラーを記録しないようです。php.ini のerror_logキーは、私が見たすべてのインストールでコメント化されています。

一般的に私は:

  1. php.iniファイルを探します。locate php.ini
  2. これらのファイルでerror_reporting値を検索します。

    これは、phpログレベルの融合で十分なものに設定する必要があります。

    例えば: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. error_log値をチェックして、実際の場所を指し、コメント化されていないことを確認してください。

    デフォルト値ではフルパスが与えられず、ファイル名のみが与えられます。このパスが通常どこに解決されるかわかりません。たぶん/var/log/


11

php.iniファイルでerror_log変数を設定するときは絶対パスを使用する必要があります。そうしないと、相対パスに従ってエラーログが保存されます。

error_log = /var/log/php.errors

他の解決策は、ディレクトリツリーからすべてのエラーログファイルをリストする単純なスクリプトを書くことです。


10

また/var/log/apache2/error.log、Google Compute Engineを使用している場合も同様です。

そして、あなたはこのように尾を見ることができます:

tail -f /var/log/apache2/error.log

5

ソースからApacheとPHPをビルドした場合、デフォルトでエラーログがIEで${Apache install dir}/logs/error_log一般的に生成されます/usr/local/apache2/logs/error_log。それ以外の場合、リポジトリからインストールした場合は、にあります/var/log/apache2/error_log。パスをに設定し、php.iniを呼び出して確認することもできますphpinfo()


5

最善の方法は、httpd.confファイルを調べて、デフォルトが何であるかを確認することです。特定の仮想ホストによって上書きされることもあります。まず、/etc/httpd/conf/httpd.confor /etc/apache2/httpd.confを見て、error_logを検索します。/ var / log / httpd / error_logとしてリストされるか/var/log/apache2/error_log、単にとしてリストされることもありますlogs/error_log

この場合、これは相対パス/etc/httpd/logs/error_logです。つまり、の下になります。それでも見つからない場合は、httpd.confファイルの下部を確認して、仮想ホストが含まれている場所を確認してください。/etc/httpd/conf.d/<-に "other"または "extra"として存在する可能性があります。仮想ホストは、ErrorLog "/ path / to / error_log"でそれを上書きできます。


4

php.iniでエラーログファイルを設定する場合、絶対パスまたは相対パスを使用できます。相対パスは生成スクリプトの場所に基づいて解決され、スクリプトがある各ディレクトリにログファイルが作成されます。すべてのエラーメッセージを同じファイルに移動する場合は、絶対パスを使用してファイル。

詳細はこちら:http : //www.php.net/manual/en/ref.errorfunc.php#53025


おかげで、これで私の問題は解決しました。相対定義の振る舞いが本当に悪い、ログファイルがhtdocsフォルダ全体に広がっていて、どこから始めればよいかわからない。他の設定と同様に、インストールフォルダーに対して相対的であると期待していました。+1。
エドゥアルド


4
php --info | grep error

これは役に立ちます。質問に対してsjasがコメントしました。だから私は答えとしてそれを含めました。


2
(らしい)これは、Apacheの設定ではなく、PHPのコマンドライン設定(例:/etc/php/7.1/cli/php.ini)の値を出力します。
BrianHenryIE 2018


2

必要な場所に、関数呼び出しを設定すると、次のようになります。error_log($ errorMessageforLog。 "\ n"、4、 'somePath / SomeFileName.som');


2

コマンドラインでErrorLog実行cat <file location> | grep ErrorLogしてhttpd.confファイルを検索します。例えば:

$ cat /etc/apache2/httpd.conf | grep ErrorLog

出力:

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/private/var/log/apache2/error_log"

で始まる行を見つける ErrorLogください。あなたの答えがあります。

注:仮想ホストの場合、仮想ホストファイルhttpd-vhosts.confを編集して、別のログファイルの場所を指定できます。


2

cPanelエラーログは次の場所にあります。

/ usr / local / cpanel / logs /

/ usr / local / apache / logs /

デフォルトでは、Apcheのログは次の場所にあります。

/ var / log / apache

または

/ var / log / apache2

誰かがカスタムログの場所を使用している場合は、次のコマンドを実行して確認できます。

猫/ etc / apache2 / conf /httpd.conf | grep ErrorLog

apache2ディレクトリが存在しないというエラーが発生した場合は、次のコマンドを実行して正しい場所を見つけることができます。

whereis apache

または

whereis apache2


1
  1. ファイルマネージャーのチェックログフォルダーに移動できます。
  2. public_htmlフォルダーのログファイルを確認します。
  3. ログが保存されている「php phpinfo()」ファイルを確認してください。

1

共有環境にあり、エラーログが見つからない場合は、cPanelのダッシュボードにcPanelのオプションエラーがあるかどうかを常に確認してください。エラーログが見つからない場合は、そこにあります。

cPanelの検索バーでエラーを検索すると、基本的にさまざまなhttpエラーページのリストであるエラーページが表示され、他のエラーはエラーログが表示される場所です。

共有環境で確認する他の場所:/ home / yourusername / logs / home / yourusername / public_html / error_log


1

このようなもの :

sudo locate error.log | xargs -IX grep -iH "errorlog" X

または

sudo locate error_log | xargs -IX grep -iH "errorlog" X

または

sudo find / -iname "error?log" 2>/dev/null | xargs -IX grep -iH "errorlog" X

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.