6

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 コンポーネントを書き直す必要があります。

また、フォームは Symfony によって自動的に生成され、これは PHP が処理できる基本的な機能のように見えるため、配列なしでフォーム変数を書き換える必要はありません (例: po[name] を po_name に)。

誰かがこの問題について何か考えがありますか?

PS: これは、こちらで説明されている問題に似ています。さらに、同じバージョンの Suse (SUSE Linux Enterprise Server 11) で問題が発生します。

4

2 に答える 2

1

あなたが提案していることは私にとってはうまくいきます。完全なテストコード:

<html>
<body>
<pre>
<?php
if (isset($_POST) && !empty($_POST))
{
        echo file_get_contents("php://input");
        echo "\n\n";
        var_dump($_POST);
}
?>
</pre>
<form action="" method="post">
  <input type="text" id="po_name" name="po[name]">
  <input type="text" id="po_role" name="po[role]">
  <input type="submit">
</form>
</html>

「1」と「2」の値を持つ結果スニペット:

po%5Bname%5D=one&po%5Brole%5D=two

array(1) {
  ["po"]=>
  array(2) {
    ["name"]=>
    string(3) "one"
    ["role"]=>
    string(3) "two"
  }
}

私のPHP:

PHP Version 5.3.3-7+squeeze14
CGI/FastCGI
Apache/2.2
Suhosin Patch 0.9.9.1

ここでは問題はないので、明らかに機能するはずです。このテストコードが機能しない場合、私の最善の策は、使用しているバージョンのPHPバグ(または、どこにも言及されていない、一見無関係に見える機能のバグ)です。

于 2012-10-02T06:39:11.480 に答える
1

最終的に、PHP のバージョンを最新バージョン (5.3.15) に更新することにしましたが、現在は問題なく動作しています。したがって、これは確かにこの 5.3.8、少なくとも私たちが持っていたバージョンの問題でした。

于 2012-10-05T03:23:00.957 に答える