Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP curl rest客户端在命令行上运行时工作,但不在网页中运行_Php_Rest_Curl_Post - Fatal编程技术网

PHP curl rest客户端在命令行上运行时工作,但不在网页中运行

PHP curl rest客户端在命令行上运行时工作,但不在网页中运行,php,rest,curl,post,Php,Rest,Curl,Post,我已经编写了一个独立的php脚本,可以进行curl post调用。该脚本在命令行中运行良好(在NetBeanIDE中作为php脚本运行)。但当我将相同的代码放入php控制器并从网页调用控制器时,它失败了。代码如下: $data = '{"active":"true","state":["2" ,"1"], "cat_item_Name":"IT Network Data Center", "limit":2500, "fields":["request","cat_item","number",

我已经编写了一个独立的php脚本,可以进行curl post调用。该脚本在命令行中运行良好(在NetBeanIDE中作为php脚本运行)。但当我将相同的代码放入php控制器并从网页调用控制器时,它失败了。代码如下:

$data = '{"active":"true","state":["2" ,"1"],
"cat_item_Name":"IT Network Data Center",
"limit":2500,
"fields":["request","cat_item","number","active","state"],
"variables":"true", 
"children":"true",
childOptions":{"limit":100,
"fields":["number","description","active","assignment_group","assigned_to"]
}}';
//decoded json object
$jsonDataObject = json_decode($data, true);
try {
$base_url = 'https://anotherwebsite;
$curl = curl_init($base_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //$jsonDataObject);
$headers = array(
'Content-Type:application/json',
'Authorization: Basic '. base64_encode("username:password") 
);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
//curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$curl_response = curl_exec($curl);

if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additioanl info: ' . var_export($info));
}
close($curl);
失败请求的输出为:

Array
(
[url] => https://anotherwebsite
[content_type] => 
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 0.224197
[connect_time] => 0.278377
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => 0
[upload_content_length] => 0
[starttransfer_time] => 0
[redirect_time] => 0
)
从网页调用时失败的原因是什么(例如,一个调用操作函数的按钮),而从命令行运行独立脚本时失败的原因是什么


提前感谢

正如Mohsin所说,您在$base_url变量(示例代码的第13行)中遗漏了一个引号。因此,在您的情况下,语法是不正确的。您可以使用
php-l filename.php
检查指定php文件的语法是否正确。

您在$base\u url变量中遗漏了
单引号请添加单引号。很抱歉,在我替换内部网站url时遗漏了单引号。我在源代码中有引用。在浏览器中检查phpinfo(),并将其与命令行上的php-v执行进行比较。如果它们不同,那应该是您的问题。您好,浏览器中的版本是PHP版本5.6.10,命令行版本是7.2。这将带来不同?是的,版本不匹配可能会带来巨大的不同。不过,这不仅仅是版本。这是两个完全不同的PHP安装/环境,可能是用不同的参数构建的,可能安装了不同的模块(PEAR、composer等)。这不是语法错误。ThanksHow PHP控制器看起来像什么?您使用的是什么框架?使用zend框架。我在控制器操作中也尝试了zend_rest_客户端和zend_http_客户端,但都不起作用。我可以看到操作被调用,但rest post没有返回。zend_rest_客户端代码应该非常简单,但我不知道是什么导致了问题。