PHP cURL表示在POST到虚拟主机时永久移动

时间:2014-03-10 09:52:12

标签: php post curl

我正在尝试使用PHP cURL将一些数据发布到使用虚拟主机来创建自定义域http://example.local的本地站点,但结果似乎是Moved Permanently。我怎么能让这个工作?

这是我目前的代码:

$url = "http://example.local/paypal_ipn.php"
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_POST, substr_count($req,'&')+1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $req);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

我尝试将CURLOPT_FOLLOWLOCATION设置为true,但这样就没有POST数据了。

2 个答案:

答案 0 :(得分:21)

试试吧

//** add options **//

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, "your_var");
curl_setopt($curl, CURLOPT_POSTREDIR, 3);

curl_exec($curl);

答案 1 :(得分:10)

使用CURLOPT_CUSTOMREQUEST代替CURLOPT_POST;

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");

还有一个,你需要添加

curl_setopt($curl, CURLOPT_POSTREDIR, 3);

3表示follow redirect with the same type of request both for 301 and 302 redirects.

通过这样做,第二个请求也将作为POST请求。请注意,CURLOPT_POSTREDIR在PHP 5.3.2 here

中实现