簡體   English   中英

如何將 POST 請求的完整正文記錄到文件中以進行調試?

[英]How can I log the full body of a POST request to a file for debugging?

我已經閱讀了這個問題的許多“可能重復”,並在這篇文章中使用了其中一個的代碼,但我似乎無法確切地看到這個問題在問什么。

作為與 PHP 或網站無關的更大項目的一部分,我需要獲取對我的共享服務器的 POST 請求的正文。 按照這篇 SO 帖子的想法,我在服務器上的 www 文件夾中創建了一個 php 文件,其中包含以下內容

webhook.php

<?php 
error_log("webhook running");
file_put_contents("post.log", print_r($_POST, true));
?>

然后,我使用第三方公司向我的服務器上的該腳本發布了一條測試消息,該腳本收到了 200 響應。

該帖子的正文包含

Body
{
  "events": [
    {
      "id": "EVTESTDCQAHTYRDYM72",
      "created_at": "2021-01-04T12:17:41.536Z",
      "resource_type": "payments",
      "action": "paid_out",
      "links": {
        "payment": "index_ID_1234567"
      },
      "details": {
        "origin": "mycompanys",
        "cause": "payment_paid_out",
        "description": "The payment has been paid out by mycompany."
      },
      "metadata": {}
    }
  ]
}

但我服務器上的日志文件只包含

Array
(
)

我不是 PHP 程序員(只需完成我需要完成的工作即可)出於調試和開發目的,我應該如何更改我的 webhook.php 腳本,以便我可以看到發送的所有數據?

如果我能做到這一點,那么我可能會弄清楚如何對每個元素進行正確處理,而這些元素並不總是具有上述結構。

當請求 Content-Type 為application/x-www-form-urlencodedmultipart/form-data時,PHP 僅填充 $_POST。 如果您發送任何其他內容,則必須使用php://input來讀取原始 POST 正文,並自己解析。

您顯示的示例 JSON 似乎是有效的 - 所以如果 json_decode 在這里沒有給您預期的結果,那么您的輸入數據可能不是您最初期望的。

這里的一個基本調試錯誤是您只查看多個“復合”操作的最終結果。 首先記錄file_get_contents('php://input')返回的內容,看看這是否真的是你所期望的。 如果不是一開始,那么只查看 json_decode 返回的內容並沒有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM