更新:我找到了原因。这是因为该文件只有回车。用 CR+LF ( \r\n
) 替换后,在服务器上就可以正常工作了。
原帖:
我刚刚将我的网站上传到我的虚拟主机,我注意到一个关于 POST 数据的奇怪问题。在 localhost 上,一切正常,但在服务器上,由于某种原因,POST 数据似乎在处理过程中消失了?
该站点将数据从表单提交到 guestbookFormProcessor.php:
<!doctype html>
<html lang="en">
<head>
<title>Add Guestbook Comment</title>
<meta charset="UTF-8" />
</head>
<body>
<?php
var_dump($_POST); // This returns data OK on the server
// Process POST data
$unsafeFormData = array_values($_POST);
var_dump($unsafeFormData); // This returns nothing on the server!
// anything after this point will not appear on the page, not even echos
?>
</body>
</html>
但这在服务器上根本没有输出!
如果我添加一个echo 'Test';
,它会出现在页面上,但如果我在之后添加它,$unsafeFormData = array_values($_POST);
那么它不会出现?!
事实上,我在该行之后添加的任何内容都不会出现在页面上。我还检查了行中是否有任何奇怪的字符,但即使对于十六进制编辑器来说也很正常。有什么问题?它似乎与 array_values() 函数有关,因为发生这种情况:
var_dump($_POST);
array(5) { ["name"]=> string(4) "Juha" ["antispam"]=> string(1) "4" ["antispamIndex"]=> string(1) "1" ["message "]=> 字符串(4) "测试" ["提交"]=> 字符串(4) "发送" }
var_dump($unsafeFormData);
(根本没有输出!)
为什么 POST 数据会在 array_values() 之后消失?
谢谢!