繁体   English   中英

PHP的:使卷曲请求

[英]PHP :Making a curl request

我在这里有问题

<?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上运行上述代码,对我来说工作正常

客户端,但是每当我尝试将此代码发布到生产版本时

此代码不会影响其余服务器。

请告诉我这里是什么问题?

我在MOzila中使用相同的标头,但工作正常

我正在运行Nginx

一切都在注释中,但让我们按顺序放下。

1)Curl可能未安装在服务器上的PHP中。 要找出原因,请打开错误报告(或检查错误日志)。 或者,一种更可靠的方法是检查功能。 将以下内容添加到您的代码中(在包含之后)

if (!function_exists('curl_init')) {
     die('Curl not installed');
}

解决方案:您可以尝试使用file_get_contents,但正如注释中所述,通常不建议这样做,因为它也被禁用。 如果需要传递标题,则可以在“上下文”(调用中的第三个参数-查看手册)中进行。 更好的选择是安装curl(或获得支持以安装它)。

2)可能启用了防火墙。 您可以通过检查curl_getinfo ()并将结果转储到屏幕(以进行测试)来建立。 这将告诉您它是否被阻止或通过。 有关更多信息,请参见手册(上面链接)。

3)您的代码中可能存在较高的错误,导致出现问题。 检查错误日志,或使用以下命令打开error_reporting

error_reporting(E_ALL);
ini_set('display_errors', 'on');

不过,请记住在最终投入生产时删除这些行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM