我将 PHP 5.3.8 与 Apache 2.0 一起使用。我也在使用 Symfony 2,但这不是脚本失败的地方。我有一个带有数组变量的表格:
<form action="/app_dev.php/admin/position/create" method="post">
<input type="text" id="po_name" name="po[name]" required="required" maxlength="50">
<input type="text" id="po_role" name="po[role]" required="required" maxlength="20">
</form>
直接在 app_dev.php 文件中(从问题中排除 Symfony)我这样做:
echo file_get_contents("php://input"); // outputs: po%5Bname%5D=Developer&po%5Brole%5D=ROLE_USER
var_dump($_POST); // outputs: array(1) { ["po"]=> array(1) { ["name"]=> string(9) "Developer" } }
die();
基本上它只保留数组中的第一个变量。如果我将变量的名称从 po[role] 更改为 ba[role] 然后 $_POST 输出:
array(1) {
["po"]=> array(1) { ["name"]=> string(9) "Developer" },
["ba"]=> array(1) { ["role"]=> string(9) "ROLE_USER" }
}
我发现可能导致此问题的典型问题是由于以下 php.ini 配置,我也给你我的值是什么:
max_execution_time = 30
max_input_time = 60
max_input_nesting_level = 64
max_input_vars = 1000
post_max_size = 8M
upload_max_filesize = 2M
memory_limit = 128M
这些值似乎是合理的,我认为不会导致问题,但不能 100% 确定。
我没有安装 suhosin,因为我读过它也会导致类似的问题。
它也类似于这个问题,但给出的解决方案需要我重写 HttpFoundation Symfony 组件。
此外,我不想重写没有数组的表单变量(例如po[name] 到 po_name),因为表单是由 Symfony 自动生成的,这似乎是 PHP 应该能够处理的基本功能。
有人对这个问题有任何想法吗?
PS:这与此处描述的问题类似。另外,问题发生在相同版本的 Suse (SUSE Linux Enterprise Server 11) 上。