在一台运行Apache和PHP 5的Linux服务器上,我们有多个具有单独日志文件的虚拟主机。我们似乎无法在虚拟主机之间分离php error_log
。
在<Location>
的{{1}}中覆盖此设置似乎无效。
有没有办法为每个虚拟主机分别设置php httpd.conf
?
答案 0 :(得分:136)
如果有人来看,它应该是这样的:
<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
答案 1 :(得分:78)
要设置 Apache (而非PHP )日志,最简单的方法是执行此操作:
<VirtualHost IP:Port>
# Stuff,
# More Stuff,
ErrorLog /path/where/you/want/the/error.log
</VirtualHost>
如果没有前导“/”,则认为它是相对的。
答案 2 :(得分:12)
我通常只在我正在处理的域中的.htaccess
文件或 vhost.conf
中指定此内容。将其添加到以下文件之一:
php_admin_value error_log "/var/www/vhosts/example.com/error_log"
答案 3 :(得分:8)
默认行为是error_log()输出到Apache错误日志。如果没有发生这种情况,请检查error_log指令的php.ini设置 - 保留未设置状态以使用当前vhost的Apache日志文件。
答案 4 :(得分:6)
请勿将error_log
设置为syslog
内容eg /var/log/apache2
,因为错误会被ErrorLog
拦截。而是在项目文件夹中为日志创建subdir
并执行php_value
error_log "/path/to/project/logs"
。这适用于.htaccess
文件和vhosts 。另外,请务必将php_flag
log_errors
放在
答案 5 :(得分:5)
您是否尝试将php_value error_log '/path/to/php_error_log
添加到VirtualHost配置中?
答案 6 :(得分:5)
是的,你可以试试,
php_value error_log "/var/log/php_log"
在.htaccess
中,或者如果用户希望进行日志记录,则可以让用户在脚本的开头使用ini_set()
。
另一种选择是使用脚本将脚本默认为文件夹中的php.ini
,然后转到用户/主机的根文件夹,然后转到服务器的根目录或类似的东西。这将允许主持人添加自己的php.ini
值和他们自己的error_log
位置。
答案 7 :(得分:5)
php_value error_log "/var/log/httpd/vhost_php_error_log"
它适用于我,但我必须更改日志文件的权限。
或Apache会将日志写入其error_log
。
答案 8 :(得分:4)
我的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>
答案 9 :(得分:3)
你可以尝试:
<VirtualHost myvhost:80>
php_value error_log "/var/log/httpd/vhost_php_error_log"
</Virtual Host>
但我不确定是否会起作用。我尝试在我的网站上没有成功。
答案 10 :(得分:1)
创建简单的VirtualHost:
示例主机名: - thecontrolist.localhost
C:\ Windows \ System32下\驱动程序\等
主机文件中的 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此链接