curl_init()函数不起作用

嗨,我在POST请求中尝试PHP Post Request,认为它可能对我有用,我的代码如下所示
$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
我想要做的是我有一个发送帖子请求的预订表格,然后我想处理帖子值并再次发送请求到paypal     
已邀请:
您需要为php安装CURL支持。 在Ubuntu中,您可以通过它安装它
sudo apt-get install php5-curl
如果您正在使用apt-get,那么您将不需要编辑任何PHP配置,但您需要重新启动Apache。
sudo /etc/init.d/apache2 restart
如果您仍然遇到问题,请尝试使用phpinfo()以确保将CURL列为已安装。 (如果不是,那么您可能需要打开另一个问题,询问为什么您的软件包没有安装。) PHP CURL文档中有一个安装手册。     
对于Windows,如果有人感兴趣,请从php.ini取消注释以下行(通过删除;)
;extension=php_curl.dll
重启apache服务器。     
对于Ubuntu: 如果需要,将
extension=php_curl.so
添加到php.ini以启用。然后
sudo service apache2 restart
这通常是自动处理的,但有些情况 - 例如,在共享开发环境中 - 可能需要手动重新启用。 指纹将匹配所有这三个条件: curl_init()调用时出现致命错误 在php_info中,您将看到curl模块作者(表示curl已安装且可用) 同样在php_info中,你会看到没有curl配置块(表示没有加载curl)     
我通过以下步骤在ubuntu 16.04中工作。我的php版本是7.0   sudo apt-get install php7.0-curl      sudo service apache2 restart 我从这个链接获取它在这里查看更多详细信息     
就我而言,在Xubuntu中,我不得不安装libcurl3 libcurl3-dev库。使用此命令一切正常:
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
    
步骤1 :
C:/(path to php folder)/php.ini
enable extension=php_curl.dll
(删除行尾的
;
) 第2步 : 添加到
Apache/conf/httpd.conf
(libeay32.dll,ssleay32.dll,libssh2.dll直接在php7文件夹中找到)
# load curl and open ssl libraries
 LoadFile "C:/(path to php folder)/libeay32.dll"
 LoadFile "C:/(path to php folder)/ssleay32.dll"
 LoadFile "C:/(path to php folder)/libssh2.dll"
    
我在Windows平台上使用PHP7 / Apache 2.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"
    
只是在您的系统中安装了多个PHP版本的情况下添加我的答案,并且您确定已经安装了
php-curl
软件包,但Apache仍然给您相同的错误。 即使在Php 7中启用了php-curl,curl_init()仍未定义。     
为了修复这个错误,我做了: 在
php.ini
文件中,取消注释此行:
extension=php_curl.dll
php.ini
文件中,取消注释此行:
extension_dir = "ext"
我重新启动了NETBEANS,因为我使用的是内置服务器     
这个答案是针对https请求的: Curl没有内置的根证书(就像大多数现代浏览器一样)。您需要将其明确指向cacert.pem文件:
  curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem');
如果没有这个,curl无法验证通过ssl发回的证书。每次在curl中使用SSL时,都可以使用相同的根证书文件。 您可以在此处获取cacert.pem文件:http://curl.haxx.se/docs/caextract.html 参考PHP cURL不使用HTTPS     
(试图让Curl在Windows上通过PHP和Apache工作......) 我一直收到错误说: 调用未定义的函数'curl_init()' 我确保在php.ini文件中使用了这一行启用了curl: 延长= php_curl.dll 我确保正确设置了extension_dir变量,如下所示: extension_dir =“ext” 我正在做其他人在论坛上说的所有内容,curl没有出现在我对phpinfo()的调用中,我一直从上面得到同样的错误。 最后我发现Apache默认在C: Windows文件夹中查找php.ini。我一直在PHP安装文件夹中更改php.ini。一旦我将我的php.ini复制到C: Windows中,一切正常。 让我永远想出来,所以我想发布以防万一。     

bab

RusAlex的答案是正确的,对于Apache,你必须安装并启用curl并重启你的apache服务:
sudo apt-get install php5-curl
sudo service apache2 restart
在我的Ubuntu服务器上使用nginx和php5-fpm我遇到了以下问题。我不得不像这样重新启动nginx和php5-fpm:
sudo service nginx restart
sudo service php5-fpm restart
但我有非工作的php5-fpm进程,这显然是ubuntu中的一个错误https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 所以我不得不杀死所有空闲的php5-fpm进程才能重启php5-fpm以便curl模块实际加载
sudo kill <Process Id of php5-fpm Process)
    
function curl_int(); 导致服务器错误,安装sudo apt-get install php5-curl 重启apache2服务器..它会像魅力一样工作     
适用于PHP 7和Windows x64 libeay32.dll,libssh2.dll和ssleay32.dll不应该在apache / bin中,并且应该只存在于php目录中,并在系统环境变量中添加php目录。这对我有用。 显然在php.ini中你也应该启用php_curl.dll。     
只需安装最新版本的wamp服务器即可。     

要回复问题请先登录注册