生產環境無法直接 var_dump、echo 輸出調試信息,error_log() 成為將關鍵數據寫入文件的標準方案。
if(!empty($_POST)) {
while (list($key, $val) = each($_POST)) {
@error_log("$key => $val", 3, '/tmp/test_post_allstarpay.log');
}
}
| 參數 | 說明 | 示例值 |
|---|---|---|
| $message | 要寫入的日誌內容 | "key => value" |
| $message_type | 0=PHP 系統日誌、1=Email、3=指定文件、4=SAPI 日誌 | 3 |
| $destination | 類型 3 時的文件路徑、類型 1 時的 Email 地址 | /tmp/test_post_allstarpay.log |
| $extra_headers | 類型 1 時的額外郵件頭 | - |
touch/tmp 通常全局可寫,CentOS 等系統無需額外配置// 結構化日誌(JSON 格式,便於 ELK/日誌平台採集)
error_log(json_encode(array(
'timestamp' => date('c'),
'method' => $_SERVER['REQUEST_METHOD'],
'uri' => $_SERVER['REQUEST_URI'],
'post' => $_POST,
'ip' => $_SERVER['REMOTE_ADDR']
)), 3, '/var/log/api_debug.log');
logrotate 定期切割壓縮