我的目标是根据 Apache 调用的执行PHP资源来写入不同的日志文件。
我的第一个想法是简单地在PHP脚本中使用apache_setenv()
设置环境变量,并在Apache conf中使用CustomLog
中的该变量。
像
这样的东西PHP
apache_setenv('VAR=yes');
的Apache
CustomLog "filename1" logFormat env=!VAR
CustomLog "filename2" logFormat env=VAR
非常直接,对吧?
除了它不起作用:Apache永远不会检测到VAR
,因此日志始终放在filename1
我的下一个测试是在日志行中打印变量 ,只是为了查看它是否已正确设置。
的Apache
LogFormat ... "%{VAR}e" ... logFormat
它有效!我在相应的日志行广告位中获得了yes
。
所以似乎apache_setenv
确实为CustomLog
配置创建了一个环境变量,但太晚。
我也尝试过:
$_SERVER['VAR'] = 'yes';
$_ENV['VAR'] = 'yes';
我唯一的另一个想法是用PHP编写其他日志文件我自己,而不是通过CustomLog。但这意味着我必须自己构建行日志并“伪造”LogFormat。