【问题标题】:Set PHP-log placement in .htaccess - use variable for subdomain?在 .htaccess 中设置 PHP 日志位置 - 为子域使用变量?
【发布时间】:2017-02-04 17:48:09
【问题描述】:

好的。我的 .htaccess 中有这个:

# enable PHP error logging
php_flag  log_errors on
php_value error_log  logs/php_errors.log

这可行,但我希望根据哪个子域处于活动状态来命名错误日志(不同的子域使用相同的文件,因此我不能仅根据正在加载的特定文件来区分位置)。

我尝试过这样做(但它不起作用):

# enable PHP error logging
php_flag  log_errors on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST}        !^www
RewriteCond %{HTTP_HOST}         ^([^\.]+)\.([^\.]+)\.([^\.]+)$
php_value error_log  logs/php_errors_$1.log

它只返回文件夹中的 php_errors_$1.log。那么,有没有办法可以将它分配给一个变量,并在文件名中使用该变量?

【问题讨论】:

  • 我相信“$1”只能通过“RewriteRule”访问...
  • 是的,我想...所以我只是想知道是否有其他方法可以写类似的东西。
  • 我认为最好在每个子域中创建一个 .htaccess 文件并设置 error_log
  • 找到了一些解决方法。因为太长所以把它作为答案发布了
  • 本身没有单独的子域。只是不同的子域都进入同一个文件夹,PHP 会选择不同的配置文件,然后决定加载哪个数据库等,但是没有地方放置不同的 .htaccess 文件。

标签: php apache .htaccess


【解决方案1】:

这是一个小问题:

.htaccess:

php_value auto_prepend_file "/home/path/public_html/domain/setLogFile.php"

setLogFile.php:

<?php

// Get subdomain
$subdomain = array_shift((explode(".",$_SERVER['HTTP_HOST'])));

// Set log file
ini_set("log_errors", 1);
ini_set("error_log", "/home/path/public_html/domain/logs/php_errors_" . $subdomain);

?>

【讨论】:

  • 这行得通,但有点违背了尝试使用 .htaccess 进行设置的目的,而不是使用 PHP ......不过,如果没有其他解决方案,我会考虑这样做。
  • 好的。如果您将所有子域都放在同一个目录中,我认为没有办法通过 .htaccess 进行操作。
  • 我已将此设置为答案,因为它工作正常,并且不会使其变得更复杂。感谢您的提示!
猜你喜欢
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
相关资源
最近更新 更多