PHP设置?PHP未接收POST数据

10

我正在用Java应用程序向一个.php文件发送POST数据,但是该.php文件无法接受POST数据。file_get_contents('php://input')为空, $_POST也是空的。我知道问题不在于.php文件或Java应用程序,因为我使用不同的主机进行测试,它可以正常工作。是否有我需要更改的php.ini设置或设置遗漏了?


你能描述一下你的服务器环境吗? - nikc.org
也许你遇到了这个问题:http://stackoverflow.com/questions/5541362/php-loses-form-post-parameters - max4ever
在 PHP 中检查最大的帖子大小和上传的文件应该出现在 $_FILES 而不是 $_POST - Kumar
我有Godaddy无限套餐。 - Sam
6个回答

18

我也遇到了这个问题。对于后来的访问者,我的问题是在URL中缺少尾部斜杠。例如...

http://someplace.com/cheeseburger

本应该是...

http://someplace.com/cheeseburger/

在我的情况下,这导致帖子发布失败。


2
你是怎么想到这个的?我觉得我永远也想不到! - Oscar Godson
这是怎么工作的...谢天谢地我找到了这个建议... - Keno
1
爱你三千……我已经尝试了好几个月,但一直找不到解决方案。今天不知怎么的,我看到了你的答案,尝试了一下,结果就奏效了。非常感谢…… - Prakash
非常感谢。您的回答解决了我的问题。 - ptree
天啊...我在桌子上磕了两天的头,结果原来如此简单。 - Albert
谢谢!这让我免去了烦恼!我不知道这些之间有这么大的区别,也许至少在Apache上是这样。 - Keyacom

16

如果HTTP消息中Content-Type为空或无法识别,则PHP $_POST数组为空。如果您无法发送Content-Type,则可以将以下内容添加到您的PHP中:

if(empty($_SERVER['CONTENT_TYPE']))
{ 
 $_SERVER['CONTENT_TYPE'] = "application/x-www-form-urlencoded"; 
}

你还可以检查一下是否在你的php.ini文件中设置了正确的选项。

; Maximum size of POST data that PHP will accept.
post_max_size = 8M
如果 post_max_size 的值为 0,PHP 将不会填充 $_POST 变量。
variables_order = "EGPCS"

如果您没有在其中添加P,则$_POST也不会被设置。


我尝试过了,但是没有成功。我不明白为什么它可以在一个主机上运行而在另一个主机上却不能。Godaddy是我的主机。它在Godaddy上无法工作,但在hosting24.com上完全正常。 - Sam
最大尺寸为128M。P在其中。 - Sam
1
另一个想法是在两个服务器的php.ini文件之间进行差异比较。 - Claude Schlesser

3

我遇到了同样的问题。问题出在http://和https://上。


2
我曾经遇到过同样的问题。原因是我在目标地址前加了http。我将它改成https后就可以正常工作了。

0

我的问题是输入名称重复。

例如: /input name="test" type="text" / /input name="test" type="text" /

每个必须有不同的名称 例如: /input name="testA" type="text" / /input name="testB" type="text" /


0

我的问题突然出现了。 我使用了一个Apache的hack来隐藏扩展名,所以我只需要从文件名中删除.php就可以了。

/* from: */ action = "folder/filename.php"
/* to: */   action = "folder/filename"

我希望这个答案能帮助处于同样情况的其他人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接