POST 経由でフォルダー/ファイル パスを要求する ajax Web ギャラリーがあります。私のXP lighttpd/phpテストサーバーでしばらく問題なく実行されています。
昨日、私はそれを新しいLinux開発サーバーに移動しようとしましたが、Apacheまたはnginxを制限する手間を省くために、ジョブにphpビルトインサーバーを使用することにしました。
問題は、新しいサーバーではギャラリーが機能しないことです (そして、以前に機能していたのとまったく同じ php.ini を使用して lighttpd の代わりに php -S 0.0.0.0:80 を実行している本番ホスト サーバーまたは古いテスト サーバーでも機能しません)。私はこれに絞り込みました: $_POST は、投稿されたデータが php://input.
$_SERVER の内容は次のとおりです (新しい Linux サーバーから実行されます)。
'DOCUMENT_ROOT' => '/xxx/public_html',
'REMOTE_ADDR' => 'x.x.x.x',
'REMOTE_PORT' => '54061',
'SERVER_SOFTWARE' => 'PHP 5.4.4-10 Development Server',
'SERVER_PROTOCOL' => 'HTTP/1.1',
'SERVER_NAME' => '0.0.0.0',
'SERVER_PORT' => '80',
'REQUEST_URI' => '/gustaf/photos/index.php',
'REQUEST_METHOD' => 'POST',
'SCRIPT_NAME' => '/gustaf/photos/index.php',
'SCRIPT_FILENAME' => '/xxx/public_html/gustaf/photos/index.php',
'PHP_SELF' => '/gustaf/photos/index.php',
'HTTP_HOST' => 'xxx.xxx',
'HTTP_CONNECTION' => 'keep-alive',
'HTTP_CONTENT_LENGTH' => '46',
'HTTP_CACHE_CONTROL' => 'max-age=0',
'HTTP_ORIGIN' => 'http://xxx.xxx',
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',
'HTTP_CONTENT_TYPE' => 'application/x-www-form-urlencoded',
'HTTP_ACCEPT' => '*/*',
'HTTP_REFERER' => 'http://xxx.xxx/gustaf/photos/index.php',
'HTTP_ACCEPT_ENCODING' => 'gzip,deflate,sdch',
'HTTP_ACCEPT_LANGUAGE' => 'en-US,en;q=0.8',
'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'REQUEST_TIME_FLOAT' => 1356462787.3962,
'REQUEST_TIME' => 1356462787,
これは、POST を開始する JS ビットの外観です。
xmlhttp.open("POST","index.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-length", parent.path.length);
//xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send("json="+JSON.stringify({"dir":parent.path}));
接続を「閉じる」にも設定しようとしましたが、何らかの理由でクロムはそれを尊重せず、「キープアライブ」として送信します。
私はこれに(クリスマス)丸一日を費やしましたが、これを解決するために引っ張る髪の毛がなくなり始めています. 誰でも助けてもらえますか?