apache PHP中的Curl在AWS EC2示例上返回空值

v64noz0r  于 2022-12-14  发布在  Apache
关注(0)|答案(3)|浏览(164)

我有AWS EC2,Apache服务器设置。所有的网站页面都工作,除了两个地方,我起诉CURL。以下指针根据这个问题搜索在线,这是预期的工作:
CURL显示在phpinfo()中。CURL命令可以访问并运行。Apache 2确实安装了CURL。CLI中的curl命令工作正常。(curl http://localhost和curl www.google.com)两者都工作正常。
当我运行下面的函数时,url在浏览器$url中运行时,返回预期的数据。但是当我从PHP运行时,没有一个echo命令返回值。而且,值似乎是空的。
函数get_patients(){ $主机名=文件获取内容('http://169.254.169.254/latest/meta-data/public-hostname');文件夹名称'/folder1/app1.php';

//echo $url;

///$url .= urlencode($query);//.'&key='.$key;

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

//echo $curl;

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT , 400);
curl_setopt($curl, CURLOPT_TIMEOUT, 400);

$data = curl_exec($curl);

curl_close($curl);

//decoding request

$result = json_decode($data, true);

//print_r( $data);

return $result;
}

这是第一个函数,大多数API都依赖于它。上面的这个php文件位于var/www/html/folder 1。当我访问我试图在浏览器中访问的主API时,$hostname.'/folder1/app1.php?all',确实返回了托管在本地apache服务器甚至远程域主机服务器上的数据。它只是不能与AWS EC2一起工作。

oprakyz7

oprakyz71#

谢谢你的回复。经过不断的故障排除,我得到了这个问题的解决。需要在php.ini中修改apache服务器配置中的配置,只要确保设置和版本在服务器上的PHP5和Apache 2文件夹中是相同的。另外,PHP5必须安装PHP5-libcurl,它已经在我的服务器上了。谢谢大家的迅速React。

xfb7svmp

xfb7svmp2#

我昨天回答了一个类似的curl问题,我可以在那里复制/调试。你的代码有点通用,不知道远程服务器地址,我可以建议你调试你的curl请求。
请参阅GET Request可与python“requests”库配合使用,但不能与curl配合使用
您需要检查curl是否返回任何错误并进行调试,如下所示

if(curl_exec($handle) === false)
{
    echo 'Curl error: ' . curl_error($handle);
}
else
{
    echo 'Char encoding ' . mb_detect_encoding($flight_model_data) . ' <br/><br/>';

    echo 'Operation Completed without any errors : <br/>' . $flight_model_data . " ENDED\n\n <br/><br/>";

    echo "<br/>Curl info : " . json_encode(curl_getinfo ($handle) );
}
zfycwa2u

zfycwa2u3#

sudo apt-get install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath

我有同样的问题,但解决后,安装php8.1-curl。

相关问题