【发布时间】:2010-09-05 05:41:45
【问题描述】:
在一台运行 Apache 和 PHP 5 的 Linux 服务器上,我们有多个带有单独日志文件的虚拟主机。我们似乎无法将虚拟主机之间的 php error_log 分开。
在httpd.conf 的<Location> 中覆盖此设置似乎没有任何作用。
有没有办法为每个虚拟主机设置单独的 php error_logs?
【问题讨论】:
标签: linux apache virtualhost
在一台运行 Apache 和 PHP 5 的 Linux 服务器上,我们有多个带有单独日志文件的虚拟主机。我们似乎无法将虚拟主机之间的 php error_log 分开。
在httpd.conf 的<Location> 中覆盖此设置似乎没有任何作用。
有没有办法为每个虚拟主机设置单独的 php error_logs?
【问题讨论】:
标签: linux apache 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
【讨论】:
要设置 Apache(不是 PHP)日志,最简单的方法是:
<VirtualHost IP:Port>
# Stuff,
# More Stuff,
ErrorLog /path/where/you/want/the/error.log
</VirtualHost>
如果没有前导“/”,则假定是相对的。
【讨论】:
httpd.conf 所在的目录,或者?
我通常只是在.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 日志文件。
【讨论】:
不要将error_log 设置为您的syslog 内容所在的位置,eg /var/log/apache2,因为它们的错误将被ErrorLog 拦截。相反,在您的项目文件夹中为日志创建一个subdir,然后执行php_valueerror_log "/path/to/project/logs"。这适用于.htaccess 文件和虚拟主机。还要确保你把php_flaglog_errors放在了
【讨论】:
尝试将php_value error_log '/path/to/php_error_log 添加到您的 VirtualHost 配置中。
【讨论】:
是的,你可以试试,
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 中有类似的东西。只需更改 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>
【讨论】:
你可以试试:
<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 在主机文件中
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>
不要忘记重新启动您的 apache。 更多check这个链接
【讨论】: