Laravel 记录到 Slack 工作簿会导致“卷曲错误(代码 3):<url> 格式错误”

snt*_*ode 2 php logging curl laravel-5 slack

我刚刚在 Slack 中设置了一个 webhook,以便从我的 Laravel 应用程序发送日志记录。

当日志行执行时,会弹出这个错误:

RuntimeException
Curl error (code 3): <url> malformed
Run Code Online (Sandbox Code Playgroud)

来源:

vendor\monolog\monolog\src\Monolog\Handler\Curl\Util.php

{
    while ($retries--) {
        if (curl_exec($ch) === false) {
            $curlErrno = curl_errno($ch);

            if (false === in_array($curlErrno, self::$retriableErrorCodes, true) || !$retries) {
                $curlError = curl_error($ch);

                if ($closeAfterDone) {
                    curl_close($ch);
                }

                throw new \RuntimeException(sprintf('Curl error (code %s): %s', $curlErrno, $curlError));
            }

            continue;
        }

        if ($closeAfterDone) {
            curl_close($ch);
        }
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

日志行:

Log::channel('slack')->info('hi');
Run Code Online (Sandbox Code Playgroud)

配置是这样的:

    'slack' => [
        'driver' => 'slack',
        'url' => env('https://hooks.slack.com/services/TC3S00PFC/BC411TH4M/YXAu...'),
        'username' => 'app',
        'emoji' => ':boom:',
        'level' => 'info',
    ],
Run Code Online (Sandbox Code Playgroud)

我尝试使用不同的 webhook url,用户名。Curl 在 php 中被激活。没有其他线索...

mar*_*ite 8

如果字符串未在 .env 中定义,env() 将返回 null,因此您只需将 url 设置为 null。也许你打算做类似的事情

'url' => 'https://hooks.slack.com/services/TC3S00...'
Run Code Online (Sandbox Code Playgroud)

或者

'url' => env(SLACK_URL, 'https://hooks.slack.com/services/TC3S00...')
Run Code Online (Sandbox Code Playgroud)

(并在 .env 中为 SLACK_URL 设置一个条目)