Php curl_init()函数不工作
嗨,我试着认为它可能对我有用,下面给出了我的代码Php curl_init()函数不工作,php,lampp,Php,Lampp,嗨,我试着认为它可能对我有用,下面给出了我的代码 $sub_req_url = "http://localhost/index1.php"; $ch = curl_init($sub_req_url); $encoded = ''; // include GET as well as POST variables; your needs may vary. foreach($_GET as $name => $value) { $encoded .= urlencode($name
$sub_req_url = "http://localhost/index1.php";
$ch = curl_init($sub_req_url);
$encoded = '';
// include GET as well as POST variables; your needs may vary.
foreach($_GET as $name => $value) {
$encoded .= urlencode($name).'='.urlencode($value).'&';
}
foreach($_POST as $name => $value) {
$encoded .= urlencode($name).'='.urlencode($value).'&';
}
// chop off last ampersand
$encoded = substr($encoded, 0, strlen($encoded)-1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_exec($ch);
curl_close($ch);
表单index.php文件和index2.php是同一目录中的另一个文件,当我打开页面时,在error.log文件中出现以下错误
[Sat Dec 18 15:24:53 2010] [error] [client ::1] PHP Fatal error: Call to undefined function curl_init() in /var/www/testing1/index.php on line 5
我想做的是,我有一个预订表单,可以发送post请求,然后我想处理post值并再次向paypal发送post请求。您需要安装对php的CURL支持 在Ubuntu中,你可以通过
sudo apt-get install php5-curl
sudo apt-get install php5-curl
如果您使用的是apt get,则不需要编辑任何PHP配置,但需要重新启动Apache
sudo /etc/init.d/apache2 restart
如果您仍然遇到问题,请尝试使用以确保CURL被列为已安装。(如果不是,那么您可能需要提出另一个问题,询问您的软件包为什么没有安装。)
适用于Windows的。中有一本安装手册,如果有人感兴趣,请从php.ini中取消对以下行的注释(删除;)
;extension=php_curl.dll
;extension=php_curl.dll
重新启动apache服务器。(尝试通过PHP和apache在Windows上运行Curl…)
我不断听到一个错误,说:
调用未定义的函数“curl_init()”
我确保在php.ini文件中使用以下行启用了curl:
extension=php\u curl.dll
我确保正确设置了extension_dir变量,如下所示:
扩展名\u dir=“ext”
我在做论坛上其他人所说的一切,而curl没有出现在我对phpinfo()的调用中,我一直从上面得到同样的错误
最后我发现Apache在默认情况下会在C:\Windows文件夹中查找php.ini。我一直在修改php安装文件夹中的php.ini。一旦我将php.ini复制到C:\Windows中,一切都正常了
我花了很长时间才弄明白这一点,所以我想我会发布文章,以防它对其他人有帮助。RusAlex的答案是正确的,对于Apache,您必须安装并启用curl,然后重新启动Apache服务:
sudo apt-get install php5-curl
sudo service apache2 restart
然而,在使用nginx和php5 fpm的Ubuntu服务器上,我遇到了以下问题。我必须像这样重新启动nginx和php5 fpm:
sudo service nginx restart
sudo service php5-fpm restart
但我有不工作的php5 fpm进程,这显然是ubuntu中的一个bug
因此,我必须杀死所有空闲的php5 fpm进程,才能重新启动php5 fpm,以便实际加载curl模块
sudo kill <Process Id of php5-fpm Process)
sudo kill为了修复这个bug,我做了:
在php.ini
文件中,取消对此行的注释:extension=php\u curl.dll
在php.ini
文件中,取消对此行的注释:extension\u dir=“ext”
我重新启动了NETBEANS,因为我使用的是内置服务器
在我的例子中,在Xubuntu中,我必须安装libcurl3 libcurl3开发库。使用此命令,一切正常:
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
对于Ubuntu:
如有必要,将extension=php\u curl.so
添加到php.ini以启用。然后sudo服务apache2重新启动
这通常是自动处理的,但在某些情况下(例如,在共享开发环境中),可能需要手动重新启用
指纹将匹配以下三个条件:
curl_init()调用时出现致命错误
在php_info中,您将看到curl模块的作者(指示curl已安装且可用)
同样在php_info中,您将看到没有curl配置块(表示没有加载curl)
我在windows平台上使用PHP7/Apache2.4时出现此错误<代码>curl_init
可从CLI工作,但不适用于Apache 2.4。我通过为libeay32.dll和ssleay32.dll添加LoadFile
指令解决了这个问题:
LoadFile "C:/path/to/Php7/libeay32.dll"
LoadFile "C:/path/to/Php7/ssleay32.dll"
LoadFile "C:/path/to/Php7/php7ts.dll"
LoadModule php7_module "C:/path/to/Php7/php7apache2_4.dll"
函数curl_int();
导致服务器错误,安装sudo apt获取安装php5 curl
重新启动apache2服务器。。它将像charm一样工作此答案适用于https请求: Curl没有内置的根证书(就像大多数现代浏览器一样)。您需要将其显式指向cacert.pem文件:
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem');
否则,curl将无法验证通过ssl发回的证书。每次在curl中使用SSL时,都可以使用相同的根证书文件
您可以在此处获取cacert.pem文件:
参考刚刚添加了我的答案,说明您的系统中安装了多个版本的PHP,并且您确信您已经安装了
PHP curl
软件包,但是Apache仍然会给您同样的错误
我通过以下步骤使它在ubuntu 16.04中工作。我的php版本是7.0 sudo apt get安装php7.0-curl sudo服务apache2重启
对于PHP 7和Windows x64
libeay32.dll、libssh2.dll和ssleay32.dll不应位于apache/bin中,而应仅存在于php目录中,并在系统环境变量中添加php目录。这是我的工作 显然,在php.ini中,您还应该启用php_curl.dll 步骤1: (删除行末尾的
;
)
步骤2:
将其添加到Apache/conf/httpd.conf(libeay32.dll、ssleay32.dll、libssh2.dll可直接在php7文件夹中找到)对于linux,您可以通过
sudo apt-get install php5-curl
sudo apt-get install php5-curl
对于Windows(从php.ini中删除;)
;extension=php_curl.dll
;extension=php_curl.dll
重新启动apache服务器。在Ubuntu 18.04上,这两个命令解决了我的这个问题
sudo apt-get install php5.6-curl //install curl for php 5.6
sudo service apache2 restart //restart apache
有这个问题,但在这里找到了答案: 必须:
sudo a2dismod php7.0
以及:
然后:
这是在系统升级到下一个Ubuntu版本之后。我发现的所有其他答案都是陈腐的,因为PPA上显然有一个坏的证书,大多数人都指出了这一点,但可能无论如何都不起作用。显然,真正的问题是禁用旧版本的php
在此处找到解决方案:
您似乎还没有在服务器上安装Curl。
检查服务器的PHP版本并运行以下命令来安装curl
sudo apt-get install php7.2-curl
然后使用以下命令重新启动apache服务
sudo service apache2 restart
用yo替换7.2
sudo apt-get install curl
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.2-fpm php7.2-gd php7.2-curl php7.2-mysql php7.2-dev php7.2-cli php7.2-common php7.2-mbstring php7.2-intl php7.2-zip php7.2-bcmath
sudo systemctl restart apache2
sudo apt-get update
sudo apt-get install php7.4-curl
sudo apt update && sudo apt upgrade
sudo apt install php-curl
sudo systemctl restart apache2
sudo systemctl restart nginx