PHP:发出curl请求
我这里有个问题PHP:发出curl请求,php,Php,我这里有个问题 <?php include('smsconfig.php'); include("SMTPconfig.php"); include("dbconnect.php"); define("SITE_URL", "http://gf2fyu.blah.com"); $GLOBAL_REST_URL = "gf2fyu.domain.com/organization/"; $he
<?php
include('smsconfig.php');
include("SMTPconfig.php");
include("dbconnect.php");
define("SITE_URL", "http://gf2fyu.blah.com");
$GLOBAL_REST_URL = "gf2fyu.domain.com/organization/";
$headers = array(
'X-MYDOMAIN-Secret:VuFlRQv40SUp0y1AXflMD0hWw8ZiiTu08f9ZXc0AYFc=',
'Content-Type: application/json; charset=UTF-8',
'Accept: application/json; charset=UTF-8',
);
//$json = array2json($ages);
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,$GLOBAL_REST_URL);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
// curl_setopt($curl_handle, CURLOPT_POSTFIELDS,$json);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
$getit = json_decode($buffer, true);
$smskey = substr(number_format(time() * rand(),0,'',''),0,5);
print_r($getit);
?>
如果我在本地服务器和mozila REST上运行上述代码,那么我可以很好地使用这些代码
但每当我试图将此代码放到生产版本时
此代码未命中rest服务器
请告诉我这里有什么问题
我在MOzila中使用了相同的标题,它也工作得很好
我正在运行Nginx,所有的东西都在评论中,但是让我们把它按顺序写下来 1) 服务器上的PHP中可能没有安装Curl。要找到答案,请打开错误报告(或检查错误日志)。或者,更可靠的方法是检查函数。将以下内容添加到代码中(在includes之后) 解决方案:您可以尝试使用file\u get\u内容,但如注释中所述,通常不建议使用该方法,因为它也被禁用。如果需要传递头,可以在“上下文”(调用中的第三个参数-检查手册)中进行传递。更好的选择是安装curl(或者获得支持安装它) 2) 可能已启用防火墙。您可以通过选中()并将结果转储到屏幕(用于测试)来确定这一点。这将告诉您它是否被阻止或通过。有关更多信息,请参阅手册(如上链接) 3) 您的代码中可能存在导致问题的错误。检查错误日志,或使用打开错误报告
error_reporting(E_ALL);
ini_set('display_errors', 'on');
不过,请记住在最终投入生产时删除这些行。许多服务器都禁用了curl。您是否尝试过
文件\u获取\u内容()
?是否引发了任何异常?您认为“它没有命中服务器”是什么意思?如果无法连接到服务器,则代码没有意义。如果您正在点击页面,但页面显示为空白,很可能是因为curl
被禁用,而您得到了一个错误。试着对curl
代码进行注释,看看页面是否加载。@Dutchie432我没有发现用file\u get\u Contents
替换curl
是个好主意(很多服务器都有allow\u url\u wrappers
禁用)。@Vyktor,用户可以找到一个带有curl
:)的主机。我提供了一个测试的替代方案。您给我上了一堂调试的好课,谢谢,但实际上我的问题与我的nginx服务器有关
error_reporting(E_ALL);
ini_set('display_errors', 'on');