curl显示为已安装并启用,但在php中执行时抛出未定义函数错误

mwyxok5s  于 2023-01-29  发布在  PHP
关注(0)|答案(1)|浏览(154)

在Centos 7系统上运行。phpinfo()说curl已启用,但当我运行以下代码时:

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

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

我得到错误:PHP致命错误:
未捕获的错误:调用未定义的函数curl_init()
如果我尝试安装它,它说它已经安装:

yum install php-curl 
Package php-common-8.1.14-1.el7.remi.x86_64 already installed and latest version

完全没有答案。我可以从这里尝试什么?为什么curl不执行?

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文件中:
延伸= curl . so

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-dextopflickcurl-debuginfo.x86_64                         1.25-2.el7.nux                          nux-dextopflickcurl-devel.x86_64                             1.25-2.el7.nux                          nux-dextopfuse-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
xuo3flqw

xuo3flqw1#

我花了一个小时在ChatGPT 3上试图解决这个问题。我不能说人工智能真的解决了这个问题,但在会议的早期它确实说了这句话:
您尝试运行的PHP脚本使用的PHP版本不正确。请确保您运行的脚本使用的是安装了cURL扩展的正确PHP版本。
运行PHP脚本的用户无权访问cURL扩展。请尝试使用其他用户运行该脚本,或设置对该脚本的正确权限。
PHP脚本可能有一些语法错误,这会导致无法识别curl_init()函数。请验证您的脚本不包含任何语法错误。
PHP脚本在上载或下载过程中可能已损坏。请尝试重新上载或重新下载脚本,并确保脚本未损坏。
安装的curl版本可能有问题。请尝试更新curl版本,看看是否可以解决此问题。
文件的损坏被证明是罪魁祸首。无论如何,它让我通过缩小问题范围的步骤最终帮助我解决了它。我真的不能推荐它足够如果你卡住了,似乎不能在这里得到任何回应,你可能想试试:https://chat.openai.com/chat
仅供参考,我与AI进行的完整故障排除对话如下:https://sharegpt.com/c/GJVQs0n
无论如何,在彻底验证curl在php中已经安装并启用,并且apache调用了正确的php版本之后,我终于意识到问题出在代码本身,不是语法,而是代码中的一些看不见的字符导致了错误,在重新输入相同的代码之后,它工作了。

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

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

如果有人知道如何在文本文件中检测这些字符,请在评论中留下信息。谢谢!

相关问题