如何为.htaccess指令设置条件

时间:2015-12-06 15:24:28

标签: php apache .htaccess error-logging

我已将.htaccess个文件配置为通过以下方式将PHP个错误附加到日志文件中:

php_flag  log_errors on
php_value error_log  /home/user_id/public_html/PHP_errors.php
php_value error_reporting 6143 

并且它在远程服务器(linux)中工作正常。但是上面的路径在本地服务器(windows)中不存在。我试过了:

php_value error_log  ./PHP_errors.php

它在本地工作,但它在远程服务器中不起作用。

是否可以将上述说明限制在远程服务器上?类似的东西:

Condition %{http_host} ^example.com$
php_value error_log  /home/user_id/public_html/PHP_errors.php

Condition %{http_host} ^localhost$
php_value error_log  ./PHP_errors.php

(我无法访问远程服务器中的php.ini文件,但当然我可以在本地更改它)

3 个答案:

答案 0 :(得分:1)

使用Apache 2.4,您可以使用此条件片段:

<If "%{HTTP_HOST} =~ m#^(www\.)?example\.com$#">
   php_value error_log  /home/user_id/public_html/PHP_errors.php
</If>

<If "%{HTTP_HOST} =~ m#localhost#">
   php_value error_log ./PHP_errors.php
</If>

答案 1 :(得分:0)

您可以从PHP控制它。因此,您可以在PHP中创建一个包含在应用程序启动时的配置文件,并设置error_log()和error_reporting()。

然后,您可以根据您的环境(本地或远程)拥有此文件的多个版本,或者您可以检查$ _SERVER变量以设置正确的路径。

答案 2 :(得分:0)

这里有一个类似的问题,答案很好:https://stackoverflow.com/a/4139899/5550193

此外,您可能不希望为日志文件提供扩展名.php,因为它会针对某些潜在漏洞进行打开。最好将其称为.log或其他不具备由Apache发送给解释器的东西。