0

我这里有问题

<?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

4

1 回答 1

1

一切都在评论中,但让我们按顺序放好。

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');

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

于 2012-10-13T10:29:52.490 回答