You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7下PHP已启用cURL却报curl_init未定义错误求助

PHP cURL扩展异常排查与解决(CentOS 7环境)

问题描述

CentOS 7系统中,phpinfo()显示cURL已启用,但执行以下PHP代码时:

<?php
// API
$url = 'https://api.openai.com/v1/embeddings';

// Create a new cURL resource
$ch = curl_init($url);
?>

抛出致命错误:

Uncaught Error: Call to undefined function curl_init()

执行yum install php-curl时,提示已安装最新版本的php-common-8.1.14-1.el7.remi.x86_64。

环境信息

php --version
PHP 8.1.14 (cli) (built: Jan  4 2023 06:45:14) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.14, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.14, Copyright (c), by Zend Technologies

phpinfo()输出:

cURL support enabled
cURL Information 7.29.0

php -i | grep "curl"
/etc/php.d/20-curl.ini,
curl
curl.cainfo => no value => no value

/etc/php.d/20-curl.ini配置:extension=curl.so

yum list *curl*输出:

yum list *curl*

Installed Packages
curl.x86_64                                        7.29.0-59.el7_9.1                       installed 
libcurl.x86_64                                     7.29.0-59.el7_9.1                       installed 
libcurl-devel.x86_64                               7.29.0-59.el7_9.1                       installed 
python-pycurl.x86_64                               7.19.0-19.el7                           @base     
Available Packages
collectd-curl.x86_64                               5.8.1-1.el7                             epel      
collectd-curl_json.x86_64                          5.8.1-1.el7                             epel      
collectd-curl_xml.x86_64                           5.8.1-1.el7                             epel      
curlftpfs.x86_64                                   0.9.2-14.el7                            epel      
flickcurl.x86_64                                   1.25-2.el7.nux                          nux-dextop
flickcurl-debuginfo.x86_64                         1.25-2.el7.nux                          nux-dextop
flickcurl-devel.x86_64                             1.25-2.el7.nux                          nux-dextop
fuse-curlftpfs.x86_64                              0.9.1-1.el6.rf                          rpmforge  
libcurl.i686                                       7.29.0-59.el7_9.1                       updates   
libcurl-devel.i686                                 7.29.0-59.el7_9.1                       updates   
nbdkit-plugin-curl.x86_64                          1.2.7-2.el7                             epel      
ocaml-curl.x86_64                                  0.7.5-3.el7                             epel      
ocaml-curl-devel.x86_64                            0.7.5-3.el7                             epel      
perl-WWW-Curl.x86_64                               4.15-13.el7                             base      
php-pear-Net-Curl.noarch                           1.2.5-10.el7                            epel      
python34-pycurl.x86_64                             7.43.0-7.el7                            epel      
python36-pycurl.x86_64                             7.43.0-7.el7                            epel      
uwsgi-alarm-curl.x86_64                            2.0.18-8.el7                            epel      
uwsgi-plugin-curl-cron.x86_64                      2.0.18-8.el7                            epel      

排查方向与解决办法

1. 验证CLI与Web环境PHP版本一致性

phpinfo()是Web环境输出,php --version是CLI版本,两者可能属于不同PHP实例:

  • 查看Web服务器(Apache/Nginx)使用的PHP版本,对比是否与CLI版本一致。
  • 若不一致,需确保Web环境的PHP已安装并启用cURL扩展。

2. 重启Web服务器

配置修改后未重启服务会导致扩展未加载,执行对应命令:

  • Apache:systemctl restart httpd
  • Nginx(配合php-fpm):systemctl restart php-fpm && systemctl restart nginx

3. 检查cURL扩展文件有效性

确认curl.so文件存在且可读取:

find / -name curl.so 2>/dev/null

确保文件路径与/etc/php.d/20-curl.ini中的配置匹配,同时检查文件权限:

ls -l /path/to/curl.so

保证Web服务器用户(如apache/nginx)有读取权限。

4. 确认PHP扩展目录配置

查看PHP扩展目录路径:

php -i | grep extension_dir

若curl.so不在该目录,可在20-curl.ini中指定绝对路径:

extension=/usr/lib64/php/modules/curl.so

修改后重启Web服务器。

5. 重装PHP cURL扩展

可能存在文件损坏,执行强制重装:

yum reinstall php-curl

重装完成后重启Web服务器。

6. 排查SELinux限制

SELinux可能阻止PHP加载扩展,临时关闭测试:

setenforce 0

若问题解决,可配置SELinux规则允许加载,或永久调整(谨慎操作):

sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

内容的提问来源于stack exchange,提问作者SomebodySysop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:56:05