Search code examples
phpcurllogginglaravel-5slack

Laravel Logging to Slack Workbook causes "Curl error (code 3): <url> malformed"


I just set up a webhook in Slack to send logging to from my Laravel app.

When the log line executes, this error pops up:

RuntimeException
Curl error (code 3): <url> malformed

Source:

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;
    }
}

The log line:

Log::channel('slack')->info('hi');

Configuration is like this:

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

I tried with a different webhook url, username. Curl is activated in php. No other clue...


Solution

  • env() will return null if the string is not defined in .env so you're just setting url to null. Perhaps you meant to do something like

    'url' => 'https://hooks.slack.com/services/TC3S00...'
    

    Or

    'url' => env(SLACK_URL, 'https://hooks.slack.com/services/TC3S00...')
    

    (and have an entry in .env for SLACK_URL)