error_log на виртуальный хост? - PullRequest
107 голосов
/ 01 августа 2008

На одном Linux-сервере под управлением Apache и PHP 5 у нас есть несколько виртуальных хостов с отдельными файлами журналов. Мы не можем разделить php error_log между виртуальными хостами.

Переопределение этого параметра в <Location> httpd.conf, похоже, ничего не делает.

Есть ли способ иметь отдельный php error_logs для каждого виртуального хоста?

Ответы [ 11 ]

136 голосов
/ 26 августа 2010

Если кто-то приходит посмотреть, он должен выглядеть так:

<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

78 голосов
/ 01 августа 2008

Чтобы установить журнал Apache (, а не PHP ), проще всего сделать это:

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

Если нет начального "/", оно считается относительным.

Страница журнала ошибок Apache

12 голосов
/ 02 августа 2008

Я обычно просто указываю это в .htaccess файле или vhost.conf в домене, над которым я работаю. Добавьте это к одному из этих файлов:

php_admin_value error_log "/var/www/vhosts/example.com/error_log"
8 голосов
/ 02 августа 2008

По умолчанию функция error_log () выводится в журнал ошибок Apache. Если этого не происходит, проверьте настройки php.ini для директивы error_log - оставьте его отключенным, чтобы использовать файл журнала Apache для текущего vhost.

6 голосов
/ 03 апреля 2010

Не устанавливайте error_log на то, куда идут ваши syslog вещи, eg /var/log/apache2, потому что их ошибки будут перехвачены ErrorLog. Вместо этого создайте subdir в папке проекта для журналов и выполните php_value error_log "/path/to/project/logs". Это касается как .htaccess файлов, так и vhosts . Также убедитесь, что вы положили php_flag log_errors на

5 голосов
/ 03 июля 2009
php_value error_log "/var/log/httpd/vhost_php_error_log"

Это работает для меня, но я должен изменить разрешение файла журнала.

или Apache запишет журнал в error_log.

5 голосов
/ 23 сентября 2008

Да, вы можете попробовать,

php_value error_log "/var/log/php_log" 

в .htaccess или вы можете попросить пользователей использовать ini_set() в начале своих сценариев, если они хотят вести журнал.

Другой вариант - включить для скриптов значение по умолчанию php.ini в папке со скриптом, затем перейти в корневую папку пользователя / хоста, затем в корень сервера или что-то подобное. Это позволит хостам добавлять свои собственные php.ini значения и свои error_log местоположения.

5 голосов
/ 29 августа 2008

Вы пытались добавить php_value error_log '/path/to/php_error_log в вашу конфигурацию VirtualHost?

4 голосов
/ 09 августа 2008

Мой 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>
3 голосов
/ 23 сентября 2008

Вы можете попробовать:

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

Но я не уверен, будет ли работать. Я пробовал на своих сайтах безуспешно.

...