调用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扩展模块了。