На одном сервере Linux, на котором запущены Apache и PHP 5, мы получили несколько виртуальных хостов с отдельными файлами журналов и всем остальным. Единственное, что мы не можем разделить между виртуальными хостами, это php error_log
.
Переопределение этой настройки в <Location>
httpd.conf
, похоже, ничего не делает.
Я что-то упустил? Есть ли способ иметь отдельный php error_logs
для каждого виртуального хоста?
Чтобы установить журнал Apache (а не PHP), самый простой способ сделать это:
<VirtualHost IP:Port>
# Stuff,
# More Stuff,
ErrorLog /path/where/you/want/the/error.log
</VirtualHost>
Если нет ведущего "/", оно считается относительным.
Если кто-то придет посмотреть, он должен выглядеть так:
<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
Обычно я просто указываю это в файле .htaccess
или vhost.conf
в домене, над которым я работаю. Добавьте это в один из следующих файлов:
php_admin_value error_log "/var/www/vhosts/example.com/error_log"
php_admin_value
и php_value
?
Поведение по умолчанию для error_log() выводится в журнал ошибок Apache. Если этого не происходит, проверьте настройки php.ini для директивы error_log - не используйте этот файл журнала Apache для текущего vhost.
Не устанавливайте error_log
туда, где находится ваш syslog
материал, eg /var/log/apache2
, потому что ошибки будут перехвачены ErrorLog
. Вместо этого создайте subdir
в папке проекта для журналов и сделайте php_value
error_log "/path/to/project/logs"
. Это касается как файлов .htaccess
, так и vhosts. Также убедитесь, что вы положили php_flag
log_errors
на
php_value error_log "/var/log/httpd/vhost_php_error_log"
Он работает для меня, но мне нужно изменить разрешение файла журнала.
или Apache будет записывать журнал в его error_log
.
Да, вы можете попробовать,
php_value error_log "/var/log/php_log"
в .htaccess
, или вы можете использовать пользователей ini_set()
в начале их скриптов, если они хотят иметь журнал.
Другой вариант - включить сценарии по умолчанию в php.ini
в папке с script, затем перейдите в корневую папку пользователя/хоста, затем в корневой сервер или что-то подобное. Это позволит хостам добавлять свои собственные значения php.ini
и их собственные местоположения error_log
.
Вы пытались добавить php_value error_log '/path/to/php_error_log
в свою конфигурацию VirtualHost?
У моего Apache было что-то вроде этого в httpd.conf. Просто измените настройки ErrorLog и CustomLog
<VirtualHost myvhost:80>
ServerAdmin [email protected]
DocumentRoot /opt/web
ServerName myvhost
ErrorLog logs/myvhost-error_log
CustomLog logs/myvhost-access_log common
</VirtualHost>
Вы можете попробовать:
<VirtualHost myvhost:80>
php_value error_log "/var/log/httpd/vhost_php_error_log"
</Virtual Host>
Но я не уверен, что сработает. Я пробовал на своих сайтах без успеха.