在PHP(Apache)中记录GET请求和查询字符串

时间:2019-01-02 14:24:45

标签: php apache api logging get

我们有一个在Apache上运行的PHP应用程序,并希望记录所有API请求(GET +参数)。

我看过这篇文章Best way to log POST data in Apache?,其中说:“ GET请求将很容易,因为它们将在apache日志中”。

但是,当我查看日志时,它们不存在。要记录GET请求和查询字符串,我需要哪些服务器日志设置?在https://httpd.apache.org/docs/2.4/logs.html

中未提及如何执行此操作

1 个答案:

答案 0 :(得分:1)

GET请求记录在访问日志文件中。阅读您提供的文档,尤其是Access Log部分很重要。 您的Apache主机应配置如下:

LogLevel        info
ErrorLog        "/private/var/log/apache2/{hostname}-error.log"
CustomLog       "/private/var/log/apache2/{hostname}-access.log" combined
然后可以在/private/var/log/apache2/{hostname}-access.log中找到

GET请求

一种用于调试目的的简便方法是编写一个记录POST数据的函数。

function logPost() {
    if (isset($_POST && !empty($_POST) {
        foreach($_POST as $key => $value) {
            error_log('=== _POST REQUEST ===');
            error_log('_POST: '.$key.' => '.$value);
        }
        // OR serialise the data but this is less readable
        error_log('=== _POST REQUEST ===');
        error_log(serialise($_POST));
    }
}
然后可以在/private/var/log/apache2/{hostname}-error.log中找到

POST请求