Apache mod_php_memory_usage打印“%zu”而不是有用的数据

时间:2014-02-04 10:29:19

标签: php apache2

使用以下LogFormat

LogFormat "%h %l %u %t \"%r\" %>s %b php(%{mod_php_memory_usage}n)" vhost_combined_memory

Apache似乎没有为每个请求输出PHP使用的内存:

IP - - [04/Feb/2014:23:22:49 +1300] "GET /icinga-web/modules/cronks/statusOverall/json?_dc=1391509810557 HTTP/1.1" 200 554 php(%zu)
IP - - [04/Feb/2014:23:22:50 +1300] "GET /icinga-web/modules/cronks/monitorPerformance/json?_dc=1391509810614 HTTP/1.1" 200 378 php(%zu)
IP - - [04/Feb/2014:23:23:49 +1300] "GET /icinga-web/modules/appkit/servertime HTTP/1.1" 200 33 php(%zu)

而不是数字,%zu出现。

我可以在服务器上进行更改以使此数据正确显示在我的日志中吗?

1 个答案:

答案 0 :(得分:0)

自己遇到这个问题。问题不在于php甚至Apache httpd。这是APR。他们实现了自己的printf扩展,而不是使用stdio。

所以你可以看到第850行... https://svn.apache.org/viewvc/apr/apr/trunk/strings/apr_snprintf.c?view=markup

...他们展开的支持字符不包含'z'字符。

所以我不相信没有修改源代码就可以修复。在php源代码中将%zu切换为%lu可能会有所帮助。