使用curl和php发送POST数据
问候 所以,我在Amazon EC2上运行Fedora Core 8。我安装了httpd、php5和libcurl以及其他一些东西。似乎工作得很好,但后来我意识到,在我的php脚本中,POST数据不是由curl发送的。命令行中的相同请求也可以工作。我也在我的本地机器(WinXP)和另一台远程机器(Ubuntu)上运行了相同的php脚本,它们运行良好,POST数据正在发送,但不是在FC8上。它需要任何特殊配置吗?有防火墙问题吗 以下是PHP代码:使用curl和php发送POST数据,php,linux,apache,curl,Php,Linux,Apache,Curl,问候 所以,我在Amazon EC2上运行Fedora Core 8。我安装了httpd、php5和libcurl以及其他一些东西。似乎工作得很好,但后来我意识到,在我的php脚本中,POST数据不是由curl发送的。命令行中的相同请求也可以工作。我也在我的本地机器(WinXP)和另一台远程机器(Ubuntu)上运行了相同的php脚本,它们运行良好,POST数据正在发送,但不是在FC8上。它需要任何特殊配置吗?有防火墙问题吗 以下是PHP代码: error_reporting(E_ALL); $
error_reporting(E_ALL);
$ch = curl_init("http://foller.me/tmp/postdump.php");
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "something=somewhere");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);
$response = curl_exec($ch);
echo $response;
curl_close($ch);
下面是相应的curl命令:
curl -d "something=somethingelse" http://foller.me/tmp/postdump.php
我还在apache错误日志中找到了相应的条目,下面是我想到的:
* About to connect() to foller.me port 80 (#0)
* Trying 75.101.138.148... * connected
* Connected to foller.me (75.101.138.148) port 80 (#0)
> GET /tmp/postdump.php HTTP/1.1
Host: foller.me
Accept: */*
< HTTP/1.1 200 OK
< Date: Tue, 07 Jul 2009 10:32:18 GMT
< Server: Apache/2.2.9 (Fedora)
< X-Powered-By: PHP/5.2.6
< Content-Length: 31
< Connection: close
< Content-Type: text/html; charset=UTF-8
<
* Closing connection #0
*即将()连接到foller.me端口80(#0)
*正在尝试75.101.138.148…*有联系的
*连接到foller.me(75.101.138.148)端口80(#0)
>GET/tmp/postdump.php HTTP/1.1
主持人:福勒,我
接受:*/*
未发送POST数据,请参阅?有什么想法吗
提前谢谢大家。
~K.我不是这方面的专家,但我有自己的工作代码,工作原理略有不同。也许这会有帮助
// Open the cURL session
$curlSession = curl_init();
// Set the URL
curl_setopt ($curlSession, CURLOPT_URL, $url);
它首先执行curl_init(),然后设置url,然后
$rawresponse = curl_exec($curlSession);
i、 e我不知道,但也许设置url后会有什么不同…?还看到了它建议将post字段作为数组而不是字符串发送的地方看起来好像这将post的请求变成了:
curl_setopt($ch, CURLOPT_NOBODY, 0);
拆下那条线,它就会工作
CURLOPT_无人
非零参数告诉库不要包含
输出中的主体部分。这只与
具有独立头和主体部分的协议
谢谢你的尝试,大卫,但不幸的是,它没有改变任何事情。不过,它在我的另外两台机器上也能工作;)但不是我想去的地方,呵呵,是啊!我刚看了手册,我的回答是胡说八道!对不起,我帮不上忙,那curl_setopt呢($curlSession,CURLOPT_POST,1);而不是“真的”。再一次从我自己的剪切粘贴代码猜测;)这不要紧,我也被卡住了,对不起,阿加诺·普罗布斯,我已经找了大约4个小时的答案;)谢谢你的努力,我已经找了4个小时了。哈哈!非常感谢,伙计=)