在一台运行 Apache 和 PHP 5 的 Linux 服务器上,我们有多个带有单独日志文件的虚拟主机。我们似乎无法将error_log
虚拟主机之间的 php 分开。
<Location>
在中覆盖此设置httpd.conf
似乎没有任何作用。
有没有办法error_logs
为每个虚拟主机设置单独的 php?
在一台运行 Apache 和 PHP 5 的 Linux 服务器上,我们有多个带有单独日志文件的虚拟主机。我们似乎无法将error_log
虚拟主机之间的 php 分开。
<Location>
在中覆盖此设置httpd.conf
似乎没有任何作用。
有没有办法error_logs
为每个虚拟主机设置单独的 php?
如果有人来看它应该是这样的:
<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>
如果没有前导“/”,则假定是相对的。
我通常只是在一个.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
到您的 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\驱动程序\等
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。更多检查这个链接