php运行报错Call to undefined function curl_init()的最新解决方法

  • Post category:http

调用undefined function curl_init()是因为Curl扩展模块没有被正确地加载或启用在php.ini中。这个问题可能不是新的,但是它仍然是一个常见的坑。以下是解决这个问题的完整攻略。

确认Curl扩展模块已经被正确安装

在终端执行以下命令:

php -m | grep curl

如果没有任何输出,则Curl扩展模块没有被正确安装。你需要先安装Curl扩展模块,对于Linux系统,你可以执行以下命令:

sudo apt-get install php-curl #Debian/Ubuntu
sudo yum install php-curl #CentOS/RHEL

对于MacOS系统使用brew安装:

brew install php-curl

确定php.ini配置文件相应参数

在php.ini文件中检查是否已经开启了Curl扩展模块,在php.ini文件中查找以下内容并打开:

;extension=php_curl(...)

将这个分号” ; “去掉,变成下面这样:

extension=curl

重新启动Web服务器

为了使更改生效,你需要重启你的Web服务器。下面是一些常见的Web服务器及其相应命令:

  • Apache2: sudo service apache2 restart
  • Nginx: sudo service nginx restart

示例1

<?php
// 实例化Curl
$curl = curl_init();

// 设置curl_setopt参数,例如请求的地址
curl_setopt($curl, CURLOPT_URL, "https://www.example.com");

// 执行curl请求
$output = curl_exec($curl);
if ($output === false) {
    echo 'Curl error: ' . curl_error($curl);
}

// 关闭Curl
curl_close($curl);
?>

示例2

<?php
// 检查是否开启Curl扩展模块
if (!function_exists('curl_init')) {
    die('Curl module is not installed!');
}

// 实例化Curl
$curl = curl_init();

// 设置curl_setopt参数,例如请求的地址
curl_setopt($curl, CURLOPT_URL, "https://www.example.com");

// 执行curl请求
$output = curl_exec($curl);
if ($output === false) {
    echo 'Curl error: ' . curl_error($curl);
}

// 关闭Curl
curl_close($curl);
?>

这两个示例都用到了PHP的Curl扩展模块(curl_init()方法),如果你的PHP环境中没有安装或正确配置Curl扩展模块,将会报错”Call to undefined function curl_init()”。如果你按照上述攻略进行操作,应该就能够正常使用Curl扩展模块了。