журнал ошибок для каждого виртуального хостинга?
-
08-06-2019 - |
Вопрос
На одном Linux-сервере, работающем под управлением Apache и PHP 5, у нас есть несколько виртуальных хостов с отдельными файлами журналов.Кажется, мы не можем отделить php error_log
между виртуальными хостами.
Переопределение этого параметра в <Location>
из числа httpd.conf
кажется, он ничего не делает.
Есть ли способ иметь отдельный php error_logs
для каждого Виртуального хостинга?
Решение
Чтобы установить Апач (не тот 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"
Поведение по умолчанию заключается в том, что error_log() выводит данные в журнал ошибок Apache.Если этого не происходит, проверьте настройки php.ini для директивы error_log - оставьте ее неустановленной, чтобы использовать файл журнала Apache для текущего виртуального хостинга.
Не устанавливайте error_log
туда, где твой syslog
все идет своим чередом, eg /var/log/apache2
, потому что их ошибки будут перехвачены ErrorLog
.Вместо этого создайте subdir
в вашем папка проекта для бревен и делать php_value
error_log "/path/to/project/logs"
.Это касается обоих .htaccess
файлы и виртуальные хостинги.Также убедитесь, что вы положили php_flag
log_errors
вкл .
Вы пробовали добавлять php_value error_log '/path/to/php_error_log
к вашей конфигурации виртуального хостинга?
Да, вы можете попробовать,
php_value error_log "/var/log/php_log"
в .htaccess
или вы можете попросить пользователей использовать ini_set()
в начале своих скриптов, если они хотят вести протоколирование.
Другим вариантом было бы включить для скриптов по умолчанию php.ini
в папке со скриптом перейдите в корневую папку пользователя / хоста, затем в корневую папку сервера или что-то подобное.Это позволило бы хостам добавлять свои собственные php.ini
ценности и их собственные error_log
Адреса.
php_value error_log "/var/log/httpd/vhost_php_error_log"
Это работает для меня, но я должен изменить разрешение файла журнала.
или Apache запишет журнал в свой error_log
.
У моего Apache было что-то подобное в httpd.conf.Просто измените настройки журнала ошибок и пользовательского журнала
<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>
Ты мог бы попробовать:
<VirtualHost myvhost:80>
php_value error_log "/var/log/httpd/vhost_php_error_log"
</Virtual Host>
Но я не уверен, что это сработает.Я пробовал на своих сайтах, но безуспешно.
Создайте простой виртуальный хостинг:
пример имени хоста:- thecontrolist.localhost
C:\Windows\System32\drivers\etc
127.0.0.1 thecontrolist.localhost
в файле hostsC:\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>
Не забудьте перезапустить свой apache.для получения дополнительной информации проверить эта ссылка