如何访问每个请求的apache跟踪的unique_id?我想在它调用的任何php脚本中跟踪它,并为每个请求记录它。
我从http.conf
文件中删除以下行的评论:
LoadModule unique_id_module libexec/apache2/mod_unique_id.so
我试图在这个简单的PHP脚本中引用ID:
<?php
print("Hello world\n");
print($_SERVER['UNIQUE_ID']);
?>
然而,此脚本仅返回Hello World
。
这可能吗?如果这有任何不同,我正在运行macos。
$ _SERVER的var_dump如下:
array(29) { ["HTTP_HOST"]=> string(9) "localhost"
["HTTP_CONNECTION"]=> string(10) "keep-alive"
["HTTP_CACHE_CONTROL"]=> string(9) "max-age=0"
["HTTP_ACCEPT"]=> string(74) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" ["HTTP_USER_AGENT"]=> string(120) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36" ["HTTP_ACCEPT_ENCODING"]=> string(17) "gzip,deflate,sdch"
["HTTP_ACCEPT_LANGUAGE"]=> string(14) "en-US,en;q=0.8"
["HTTP_COOKIE"]=> string(11) "undefined=0"
["PATH"]=> string(186) "/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/opt/local/lib/postgresql84/bin:/Applications/XAMPP/xamppfiles/bin"
["SERVER_SIGNATURE"]=> string(0) ""
["SERVER_SOFTWARE"]=> string(67) "Apache/2.2.24 (Unix) DAV/2 PHP/5.3.26 mod_ssl/2.2.24 OpenSSL/0.9.8y"
["SERVER_NAME"]=> string(9) "localhost"
["SERVER_ADDR"]=> string(3) "::1"
["SERVER_PORT"]=> string(2) "80"
["REMOTE_ADDR"]=> string(3) "::1"
["DOCUMENT_ROOT"]=> string(28) "/Library/WebServer/Documents"
["SERVER_ADMIN"]=> string(15) "you@example.com"
["SCRIPT_FILENAME"]=> string(35) "/Library/WebServer/Documents/id.php"
["REMOTE_PORT"]=> string(5) "49669"
["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1"
["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1"
["REQUEST_METHOD"]=> string(3) "GET"
["QUERY_STRING"]=> string(0) ""
["REQUEST_URI"]=> string(7) "/id.php"
["SCRIPT_NAME"]=> string(7) "/id.php"
["PHP_SELF"]=> string(7) "/id.php"
["REQUEST_TIME"]=> int(1397681759)
["argv"]=> array(0) { }
["argc"]=> int(0) }
我在同一领域遇到的另一个问题可能是眼前的问题:https://apple.stackexchange.com/questions/127801/where-are-the-apache-config-files-stored?noredirect=1#comment149749_127801
答案 0 :(得分:0)
正如赏金评论中所述,在OS X上存在一些与配置文件有关的问题。 例如,在OS X 10.7上我成功启用了httpd.conf中的mod_unique_id,如果我通过Preference Pane重新启动 - Web Sharing一切都按预期工作,但如果我通过apachectl命令重新启动一些奇怪的问题。
在OS X 10.9中,首选项窗格中没有Web共享,所以我的建议是坚持使用PHP的唯一ID生成器,例如这些函数可能会有所帮助: http://www.php.net/manual/en/function.uniqid.php和 http://www.php.net/manual/en/function.openssl-random-pseudo-bytes.php
答案 1 :(得分:0)
在我的OS X 10.9.2的全新安装中,我在/etc/apache2/httpd.conf
中启用了unique_id_module和php5_module,使用sudo apachectl restart
重新启动web服务器并且它正常工作。
我在执行apachectl -M | sort
时列出了unique_id_module,并在PHP脚本中获得了_SERVER["UNIQUE_ID"]
。
使用以下脚本:
<?php
echo $_SERVER["UNIQUE_ID"];
?>
我有这样的输出:
U08ZosCoAAMAAC9CATgAAAAA
答案 2 :(得分:0)
使用以下文本创建一个phpinfo.php脚本:
<?php
phpinfo();
?>
之后 - 在浏览器中打开它,看看unique_id_module是否列为“已加载”。
答案 3 :(得分:0)
正如module documentation中所述:
环境变量UNIQUE_ID设置为每个请求的标识符
尝试使用getenv('UNIQUE_ID')
代替$_SERVER['UNIQUE_ID']
,它不是同一个
答案 4 :(得分:0)
我必须执行/usr/sbin/httpd -k stop
然后/usr/sbin/httpd -k start
才能获取配置。不确定为什么sudo apachectl restart
看起来像重新开始,但它不是......
答案 5 :(得分:0)
a2enmod unique_id
在重新启动Apache之后对我有用。将%{UNIQUE_ID} e与自定义LogFormat一起使用时,我得到了一个连字符。