在命令行中使用cURL以及在php上使用cURL时出现的问题

在命令行中使用cURL以及在php上使用cURL时出现的问题,php,ajax,web-services,curl,command-line-arguments,Php,Ajax,Web Services,Curl,Command Line Arguments,嗯,我正在尝试从网页中的表单中获取一些结果,我已经登录了,有了PHPSESSID a,在前面的步骤中,响应是可以的。如果我像这样从命令行执行: curl "http://domain/"%"27/ajaxform" -H "Cookie: PHPSESSID=l2pgk9rqihvo5n5gf3uq79c5e6" -H "Origin: http://domain" -H "Accept-Encoding: gzip,deflate" -H "Accept-Language: es,en-US;

嗯,我正在尝试从网页中的表单中获取一些结果,我已经登录了,有了PHPSESSID a,在前面的步骤中,响应是可以的。如果我像这样从命令行执行:

curl "http://domain/"%"27/ajaxform" -H "Cookie: PHPSESSID=l2pgk9rqihvo5n5gf3uq79c5e6" -H "Origin: http://domain" -H "Accept-Encoding: gzip,deflate" -H "Accept-Language: es,en-US;q=0.8,en;q=0.6,es-419;q=0.4" -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "Accept: */*" -H "Referer: http://domain/inicio" -H "X-Requested-With: XMLHttpRequest" -H "Connection: keep-alive" --data "formName=option1&other=attributes" --compressed > resp.txt
我可以在resp.txt文件中获得结果

但是,在PHP中运行它,我得到的只是http_代码500,我在PHP中使用以下代码

function check_cdd($optionname, $sessionid){

    $url="http://domain/".urlencode("'")."/ajaxform";
    $cookie="cookie.txt"; 
    $postvars = 'formName='.$optionname.'&other=attributes';
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt ($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch, CURLOPT_ENCODING , "");
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postvars); 
    curl_setopt ($ch, CURLOPT_POST, 1); 
    curl_setopt ($ch, CURLINFO_HEADER_OUT, false);  
    curl_setopt ($ch, CURLOPT_HEADER, false);       

    curl_setopt($ch,CURLOPT_HTTPHEADER,array(
        'Cookie: PHPSESSID='.$sessionid,
        'Origin: http://domain',
        'Accept-Encoding:gzip,deflate',
        'Accept-Language: es,en-US;q=0.8,en;q=0.6,es-419;q=0.4',
        'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36',
        'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
        'Accept: */*',
        'Referer: http://domain/inicio',
        'X-Requested-With: XMLHttpRequest',
        'Connection: keep-alive'));


    $result = curl_exec ($ch); 
    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $header = substr($result, 0, $header_size);




    print("<pre>");
    print_r(curl_error($ch));
    print_r(curl_getinfo($ch));

    echo $result;

    print("</pre>");

    curl_close($ch);}.
功能检查\u cdd($optionname,$sessionid){
$url=”http://domain/“.urlencode(“”)”/ajaxform”;
$cookie=“cookie.txt”;
$postvars='formName='。$optionname.&other=attributes';
$ch=curl_init();
curl_setopt($ch,CURLOPT_VERBOSE,true);
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_超时,60);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_ENCODING,”);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);
卷曲设置($ch,卷曲设置桩,1);
curl_setopt($ch,CURLINFO_HEADER_OUT,false);
curl_setopt($ch,CURLOPT_头,false);
curl_setopt($ch,CURLOPT_HTTPHEADER,数组(
'Cookie:PHPSESSID='。$sessionid,
“来源:http://domain',
'接受编码:gzip,deflate',
'接受语言:es,en US;q=0.8,en;q=0.6,es-419;q=0.4',
'用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/37.0.2062.120 Safari/537.36',
'内容类型:application/x-www-form-urlencoded;charset=UTF-8',
“接受:*/*”,
“推荐人:http://domain/inicio',
“X-request-With:XMLHttpRequest”,
“连接:保持活动”);
$result=curl\u exec($ch);
$header\u size=curl\u getinfo($ch,CURLINFO\u header\u size);
$header=substr($result,0,$header\u size);
打印(“”);
打印错误(卷曲错误($ch));
打印(curl_getinfo($ch));
回声$结果;
打印(“”);
卷曲关闭($ch);}。
我在PHP端尝试了不同的参数和选项,但总是得到500个代码的响应,不知道还能尝试什么。提前感谢您的回答



500表示内部服务器错误…因此请帮助我调试代码,通过从curl_setopt()函数中删除
$postvars
,它在命令行中不存在,我怀疑它可能是服务器错误的根源

$postvars是命令行中随--data参数传递的查询字符串,两种情况下的值相同