Laravel 5.2中curl_init()出现错误"Call to undefined function"

6

我正在尝试使用curl在laravel中使用FCM,但是我遇到了错误。首先,我在我的控制器中编写了一个php代码:


$first_name = $request->input('first_name');
      //FCM api URL
      $url = 'https://fcm.googleapis.com/fcm/send';
      //api_key available in Firebase Console -> Project Settings -> CLOUD MESSAGING -> Server key
      $server_key = 'AIzaSyA1RyuAGGPASh_flFCwiyd9ZHEMYlhQOho';
   $target = "r_token";
      $fields = array();
      $fields['data'] = $first_name;
      if(is_array($target)){
        $fields['registration_ids'] = $target;
      }else{
        $fields['to'] = $target;
      }
      //header with content_type api key
      $headers = array(
        'Content-Type:application/json',
        'Authorization:key='.$server_key
      );

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
      $result = curl_exec($ch);
      if ($result === FALSE) {
        die('FCM Send Error: ' . curl_error($ch));
      }
      curl_close($ch);
      return $result;

我正在尝试在我的控制器中使用laravel 5.2运行此代码,但是我遇到了这个错误:

  FatalErrorException in WebKyoController.php line 52:
   Call to undefined function App\Http\Controllers\curl_init()

我尝试过:sudo apt-get install php-curl 和 apache restart,但仍然出现错误。我想知道我需要做什么。

你也尝试过 sudo apt-get install curl 吗?请告诉我你的操作系统和版本。 - Qazi
没有,我还没有尝试过这个sudo apt-get install curl命令。我正在使用Ubuntu 14.04版本。它显示curl已经安装好了。 - Nilay Singh
3个回答

14

我偶然发现了这个答案,为了避免其他不幸的人也走错路,请尝试一下我的以下方法。

  1. 查找正在运行的PHP版本

# php -v PHP 7.0.28-0ubuntu0.16.04.1 (cli) ( NTS ) ...

在本例中,我使用的是PHP 7.0

  1. 为您的PHP版本安装Curl

sudo apt install php7.0-curl

  1. 立即应用此安装

sudo service apache2 restart

  1. 再次运行您的代码,看看是否不再出现Curl错误。

0

不知道 PHP 版本

sudo service apache2 restart

sudo apt-get install php-curl


-2
我发现了解决这个问题的方法,我的PHP7安装之后不能运行。但是我卸载了PHP7并安装了PHP5,然后运行了这些命令:
 sudo apt-get install curl
 sudo service apache2 restart
 sudo apt-get install php5-curl
 sudo service apache2 restart

以上命令对我很有用。我不知道为什么在 PHP 7 上它不起作用。

这不是技巧问题,而是你的curl模块未安装...通过上述命令进行安装。 - Qazi
这是因为我原本安装的是 PHP 7,但我又尝试安装 PHP5 的 curl。 - Nilay Singh
我已经安装了curl,并且从其他控制器可以正常收到推送通知,但是在使用用于聊天应用程序的websocket控制器执行相同操作后,它会出现与上述问题相同的错误。我的laravel版本是5.2,我正在使用Ratchet WebSockets。 - Tahir Afridi
这个答案绕过了问题而没有解决它。请考虑将我的答案标记为社区答案@NilaySingh。 - Ari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接