仮想ホストごとのerror_log?


113

ApacheとPHP 5を実行する1つのLinuxサーバー上に、個別のログファイルを持つ複数の仮想ホストがあります。error_log仮想ホスト間でphpを分離することはできません。

で、この設定をオーバーライド<Location>することはhttpd.conf何もしていないようです。

error_logs仮想ホストごとに個別のphp を使用する方法はありますか?

回答:


81

PHPではなくApacheログを設定するには、これを行う最も簡単な方法は次のようにすることです。

<VirtualHost IP:Port>
   # Stuff,
   # More Stuff,
   ErrorLog /path/where/you/want/the/error.log
</VirtualHost>

先頭に「/」がない場合は、相対であると見なされます。

Apacheエラーログページ


7
これはApacheエラーログであり、PHPエラーログとは別です(他のコメントを参照)
thelem

何に対して?httpd.confそれが書かれているディレクトリ、または?
mb21

141

誰かが見に来ると、次のようになります。

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/domains/example.com/html
    ErrorLog /var/www/domains/example.com/apache.error.log
    CustomLog /var/www/domains/example.com/apache.access.log common
    php_flag log_errors on
    php_flag display_errors on
    php_value error_reporting 2147483647
    php_value error_log /var/www/domains/example.com/php.error.log
</VirtualHost>

display_errorがオンになっているため、これは開発用です。ApacheエラーログがPHPエラーログとは別であることがわかります。良いものはにありphp.error.logます。

ここでerror_reportingキーhttp://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reportingを見てください。


8
設定によっては、ログファイルを手動で作成し、Apacheが使用しているのと同じユーザー/グループに所有者/グループを設定する必要がある場合があります。Apacheは、ログファイルに書き込むことができない場合、警告を出しません。
Ian Dunn

「error_reporting」の値は、新しいバージョンのPHPで変更され、エラーレベルが追加されることに注意してください。現在、E_ALL = "30719"。
ReactiveRaven

2
"error_reporting"の値は変化し続け、 "E_ALL"や "E_STRICT"などのPHP定数をphpの外では使用できないため、これは常にすべてのエラーがログに記録されるようにする方法です。php_valueerror_reporting 2147483647
Buttle Butkus

なぜパブリックドメインスペースにログが必要なのですか?
AlxVallejo 2014

1
ログファイルは公開されません。/ html /はパブリックスペースです。
クラッチ2014

13

私は通常だけでこれを指定した.htaccessファイルまたはvhost.conf私が働いているドメイン上。これを次のいずれかのファイルに追加します。

php_admin_value error_log "/var/www/vhosts/example.com/error_log"

1
php_admin_valueとの違いについて誰かがコメントできますphp_valueか?
Nick M 14

1
これは、違いを説明していますmattiasgeniar.be/2012/02/18/...
ジェレミー

9

error_log()のデフォルトの動作は、Apacheエラーログに出力することです。これが発生しない場合は、php.ini設定でerror_logディレクティブを確認してください。現在の仮想ホストのApacheログファイルを使用する場合は、未設定のままにします。


私がチェックします。他の機密データが含まれている可能性のあるapacheエラーログを提供せずに開発者にコードをデバッグする機会を与えたい場合、apacheとphpエラーログを分離することは可能かと思います。
Michael Stum

7

エラーはによってインターセプトされるためerror_log、データのsyslog行き先を設定しないでください。代わりに、ログ用のプロジェクトフォルダーを作成してください。これはファイルと仮想ホストの両方に当てはまります。また、あなたが入れ作る上eg /var/log/apache2ErrorLogsubdirphp_value error_log "/path/to/project/logs".htaccess php_flag log_errors


面白い。この動作は、error_logファイルのパスに依存しますか?
Demonkoryu

6

php_value error_log '/path/to/php_error_logVirtualHost構成にを追加してみましたか?


6

はい、試すことができます

php_value error_log "/var/log/php_log" 

.htaccessまたはユーザーが使うことができますini_set()、彼らはログを持っているしたい場合は、そのスクリプトの先頭に。

別のオプションは、スクリプトを有効にして、スクリプトを含むphp.iniフォルダー内のに移動し、ユーザー/ホストのルートフォルダーに移動し、次にサーバーのルートなどに移動することです。これにより、ホストは独自のphp.ini値と独自のerror_log場所を追加できます。


6
php_value error_log "/var/log/httpd/vhost_php_error_log"

うまくいきましたが、ログファイルのパーミッションを変更する必要があります。

またはApacheはログをtheに書き込みますerror_log


5

私のApacheは、httpd.confにこのようなものを含んでいました。ErrorLogとCustomLogの設定を変更するだけです

<VirtualHost myvhost:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /opt/web
    ServerName myvhost
    ErrorLog logs/myvhost-error_log
    CustomLog logs/myvhost-access_log common
</VirtualHost>

1
ここでは、Apacheログではなく、PHPログについて話しています。
Demonkoryu

4

あなたが試すことができます:

    <VirtualHost myvhost:80>
       php_value error_log "/var/log/httpd/vhost_php_error_log"
    </Virtual Host>

しかし、うまくいくかどうかはわかりません。私は自分のサイトを試しましたが、成功しませんでした。


2

Simple VirtualHostを作成します。

ホスト名の例:- thecontrolist.localhost

  1. C:\ Windows \ System32 \ drivers \ etc

    127.0.0.1 thecontrolist.localhost hostsファイル内

  2. C:\ xampp \ apache \ conf \ extra \ httpd-vhosts.conf

    <VirtualHost *>
      ServerName thecontrolist.localhost
      ServerAlias thecontrolist.localhost
      DocumentRoot "/xampp/htdocs/thecontrolist"
      <Directory "/xampp/htdocs/thecontrolist">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
      </Directory>
    </VirtualHost>
    
  3. Apacheを再起動することを忘れないでください。詳細については、このリンクを確認してください

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