Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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
使用curl和php发送POST数据_Php_Linux_Apache_Curl - Fatal编程技术网

使用curl和php发送POST数据

使用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); $

问候

所以,我在Amazon EC2上运行Fedora Core 8。我安装了httpd、php5和libcurl以及其他一些东西。似乎工作得很好,但后来我意识到,在我的php脚本中,POST数据不是由curl发送的。命令行中的相同请求也可以工作。我也在我的本地机器(WinXP)和另一台远程机器(Ubuntu)上运行了相同的php脚本,它们运行良好,POST数据正在发送,但不是在FC8上。它需要任何特殊配置吗?有防火墙问题吗

以下是PHP代码:

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个小时了。哈哈!非常感谢,伙计=)