我正在尝试将 SendGrid 事件发回我的服务器。但我无法捕获数据。当我尝试测试功能时,它显示响应代码为200和发布的数据。但我无法在服务器端捕获它。我使用以下代码
<?php
$postText = trim(file_get_contents('php://input'));
print_r($postText);
$fh = fopen('/tmp/dump.log','a+');
fwrite($fh,print_r($postText),'true');
fclose($fh);
?>
没有任何内容写入文件。我试着写一些东西到同一个文件进行测试,它正在工作。所以我认为该文件具有所有权限。
答案 0 :(得分:2)
我知道这已经有效,但我想分享一些我自己使用的示例代码。 (披露:我是SendGrid员工)
与您自己的代码非常相似,但RAW_POST_DATA全局使得一次性获取所有POST数据非常容易。
<?php
$fh = fopen("/tmp/sg_event.log", 'a+');
if ($fh) {
fwrite($fh, print_r($HTTP_RAW_POST_DATA, true));
fclose($fh);
}
?> ok
答案 1 :(得分:1)
这是因为你没有将第二个参数传递给print_r
函数来打印数据!
这一行:fwrite($fh,print_r($postText),'true');
应该是这样的:fwrite($fh,print_r($postText, true));