0

我正在尝试构建一个 webhook 接收器。

我创建了这个简单的 PHP 脚本并将其上传到我的虚拟主机:

$raw_payload = file_get_contents('php://input', true);
$payload = json_decode($raw_payload, true);

if($payload){
  $myfile = fopen("log.txt", "a+") or die("Unable to open file!");
  fwrite(date('Y-m-d H:i:s', time()).PHP_EOL);
  fclose($myfile);
}

然后,在发送 Webhook(实际上是 Wekan)的应用程序中,我输入了文件的 URL:

http://myurl.com/dir/receiver.php

然后我发送了一些 webhook,但文件中没有写入任何内容。webhook 已正确发送(我使用 webhook-tester 对其进行了测试,并在那里收到了一些正确的数据,但在我的 php 文件中没有)。

应该发送的 webhook 数据如下所示(JSON):

{
  text: '{{wekan-username}} moved "{{card-title}}" from "{{old-list-name}}" to "{{new-list-name}}"\nhttp://{{wekan-host}}/b/{{board-id}}/{{board-name}}/{{card-id}}',
  cardId: '{{card-id}}',
  listId: '{{new-list-id}}',
  oldListId: '{{old-list-id}}',
  boardId: '{{board-id}}',
  user: '{{wekan-username}}',
  card: '{{card-title}}',
  description: 'act-moveCard'
} 

我在这里做错了什么?(可能是我的虚拟主机有问题吗?webhook-tester 使用 https,但是对于我使用 http 的 php 文件,这会导致错误吗?)

4

1 回答 1

2

您没有将文件资源句柄传递给fwrite()

然后也许让你的代码更冗长,并留意错误日志:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    $raw_payload = file_get_contents('php://input');
    $payload = json_decode($raw_payload, true);

    if (is_array($payload)) {
        $fh = fopen("log.txt", "a+");

        if ($fh) {
            fwrite($fh, date('Y-m-d H:i:s', time()).PHP_EOL);
            fclose($fh);
        } else {
            trigger_error("Unable to open file!");
        }
    } else {
        trigger_error("Invalid payload!");
    }
} else {
    trigger_error("Invalid request!");
}
于 2018-09-05T15:05:41.440 回答