首页 > 解决方案 > 如何解决对未定义 curl_init() 的调用?

问题描述

当我curl从 Laravel 使用时出现致命错误,但curl另一个文件中存在的一个正在工作。

为什么会出现这些错误?

致命错误:调用未定义的函数 App\Http\Controllers\curl_init()

App\Http\Controller\FcmController

class FcmController extends Controller
{
    public function index()
    {
        $ch = curl_init();

        curl_setopt($ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
        curl_setopt($ch,CURLOPT_POST, true);
        curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($fields));

        $result = curl_exec($ch);
        dd($result);

        curl_close($ch);

App\Http\Controller\CurlContoller(有用):

class CurlController extends Controller
{
    public static function getCurl($url, $params)
    {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url . $params);        
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, TRUE);;
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type:application/json; charset=utf-8"));

        $response = curl_exec($ch);
        curl_close($ch); 

        return json_encode($response);
    }

在此处输入图像描述

标签: phplaravelcurl

解决方案


如果将函数前缀到顶级名称空间,它是否有效\curl_init。对于内部的静态调用函数CurlController,将不需要它。

此外,没有具体回答您的问题,但如果您运行的是 Laravel 7 及更高版本,您实际上可以使用 Laravel 的内置http-client实现。它比 curl 更具表现力。


推荐阅读