PHP CURL无法在1& 1服务器上运行

时间:2014-02-17 15:52:13

标签: php curl

我有一个php页面,它在同一台服务器上调用某些API进行身份验证,但不是同一个域,下面是代码:

    $url = "http://www.mydomain.com/api.php";    
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($_POST));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $_POST);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $result = json_decode(curl_exec($ch),true);
    curl_close($ch);

它在godaddy上运行正常,没有改变任何东西,curl已启用,当我检查curl_getinfo它返回404时,这真的很奇怪,因为在浏览器中它是一个有效的URL,任何想法?

由于

1 个答案:

答案 0 :(得分:2)

缺少cURL init方法调用。试试这个:

$url = "www.mydomain.com/api.php";    
$ch= curl_init ($url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($_POST));
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch),true);
curl_close($ch);

获取404表示您的请求已通过,但您的请求无效,即。您的查询格式不正确。

将CURLOPT_POST设置为size($ _ POST),即如果$ _POST不为空,则为true表示您的数据必须为x-www-form-urlencoded。

这是默认内容类型。使用此内容类型提交的表单必须按如下方式编码:

转义控件名称和值。空格字符替换为'+',然后 保留字符按[RFC1738]第2.2节:非字母数字中所述进行转义 字符由'%HH',百分号和两个十六进制数字代替 字符的ASCII码。换行符表示为“CR LF”对(即, '%0D 0A%')。

控件名称/值按它们在文档中出现的顺序列出。名字是 通过'='与值分隔,名称/值对通过'&'分开。