var_dump() 在 HTTP POST 上不输出任何内容

var_dump() outputs nothing on HTTP POST

我有一个相当有趣的情况,我 Google Calendar API v3 使用 HTTP POST 调用我的 webhook.php。

在我的 webhook 中,我会使用 var_dump() 来跟踪变量的变化,我将这些 var_dump()-ed 变量打印到一个文件中,但我没有收到任何输出或错误使用 var_dump。据我所知,var_dump() 应该至少输出一个错误,NULL 或零数组(参见示例 here,由@ADyson 制作)。

另一方面,我似乎也无法使用 getallheaders(),但这可能是由于我的提供商服务器上未安装 Apache 模块。

我无法按预期使用 var_dump() 的原因可能是什么?

更新:

根据要求,这里有一个例子:

if(isset($_SERVER["HTTP_X_GOOG_RESOURCE_URI"], $_SERVER["HTTP_X_GOOG_CHANNEL_ID"])) {
    $calendarId = urldecode(substr($_SERVER["HTTP_X_GOOG_RESOURCE_URI"], 49, 54));
    $logFile = fopen("test.txt", "a") or die("Unable to open file!");
    $txt = " something \n ".
        var_dump($calendarId);
    fwrite($myfile, $txt);
    fclose($myfile);
}

在上面的示例中,我可以看到插入了“something”,但 var_dump() 的输出没有。我需要使用 var_dump() 因为我想将数组写入文件以查看其内容。综上所述,当我尝试输出到文件时,情况如下:

$foo = json_encode($bar); // this I can see inserted to the file
$foo = var_dump(json_encode($bar)); // this I can see inserted to the file

I can see 'something' is inserted, but the output of var_dump() is not

那是因为var_dump直接写入输出缓冲区,所以你不能像这样将它“连接”成一个字符串变量。

您可以使用 f.e。 print_rvar_export 相反,它们都有第二个参数可以使它们成为 return 值,而不是直接输出它。或者编码为 JSON.