• 締切済み

サーバ上でGETはできるがPOSTができない

Linuxサーバ上でGETはできるがPOSTができない、という現象が出ています。 ローカルのWindowsPCで試していて、その状態ではPOSTできています。 また、同一サーバ上でもいくつかPOSTはしており、そこでは問題なくPOSTできています。 POST先に画面遷移はしており、GETで渡す値は取れているのですが、POSTをvar_dumpしてやると array(0){} と、全く取得できていません。 ちなみにphp.ini のmax_input_vars、post_max_sizeなどはサイズを大きくしています(ここが関連してくるほどのサイズではないと思いますが) このような状態は初めてなので、わかる方が居たらぜひ教えてください。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

httpdはapacheですか? httpd.confもしくは運用しているディレクトリの.htaccessなどで limitでpostをはじいてたりしませんか?

bacchus047
質問者

お礼

何故か、省略していたindexを書くことでPOSTできるようにはなりました。 ただ、他のページはindex省略してもPOSTできるので、依然謎な症状です。 POSTができるようになったことから、弾く設定はしていないと思われます。

関連するQ&A

  • サーバへのアップロードが出来ない。

    表題の通り、アップロードしたファイルが取得出来ずに困っています。 環境はCentOSで、バージョンは覚えていません。 php.iniの設定 file_uploads = On upload_tmp_dir = "/tmp/apache" upload_max_filesize = 1024M memory_limit = 1024M post_max_file = 1024M upload_tmp_dirの値ですが、初期は/tmpだったのですが、権限の問題を疑った為、変更しました。 cd /tmp mkdir apache chmod 777 /etc/apache chown apache:apache apache としてあります。 テストで実際に使っているファイルです。 - index.php <html> <head> </head> <body> <form action="index.php" method="post" enctype="multipart/form-data" name="test"> <input type="file" size="80"> <input type="hidden" name="MAX_FILE_SIZE" value="10000000"> <input type="submit" value="アップロード"> </form> <?php var_dump( ini_get('memory_limit') ); var_dump( ini_get('post_max_size') ); var_dump( ini_get('upload_max_filesize') ); var_dump($_FILES); ?> </body> </html> apacheのエラーログも確認しましたが、$_FILESを$_FILEに書き換えて見た時以来、エラーは出ていませんでした。 解決方法をご存知の方がおりましたら、是非ともご教授頂ければと思います。

    • ベストアンサー
    • PHP
  • PHPでファイルアップローダー

    PHPでファイルアップローダーを作成しましたが、サイズの大きなファイルがアップロードできなくて困っています。 具体的には、900MBのファイルアップロードはできますが、1.4GBになるとアップロードできていません。 設定値は下記のようにし、十分にとっているつもりです。なお、HTMLで表示した実際に使われている設定値です。 <?php echo 'memory_limit = ' . ini_get('memory_limit') . "<br />"; echo 'post_max_size = ' . ini_get('post_max_size') . "<br />"; echo 'upload_max_filesize = ' . ini_get('upload_max_filesize') . "<br />"; echo 'max_execution_time = ' . ini_get('max_execution_time') . "<br />"; echo 'max_input_time = ' . ini_get('max_input_time') . "<br />"; ?> ↓ memory_limit = 5120M post_max_size = 5120M upload_max_filesize = 5120M max_execution_time = 300 max_input_time = 300 $_FILEを確認すると、下記のようにファイル名以外空となっています。エラーコードが0で正常アップロードの判定になっているので、原因が分からず困っています。 array(1) { ["upfile"]=> array(5) { ["name"]=> array(5) { [0]=> string(24) "testfile.ISO" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" } ["type"]=> array(5) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" } ["tmp_name"]=> array(5) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" } ["error"]=> array(5) { [0]=> int(2) [1]=> int(4) [2]=> int(4) [3]=> int(4) [4]=> int(4) } ["size"]=> array(5) { [0]=> int(0) [1]=> int(0) [2]=> int(0) [3]=> int(0) [4]=> int(0) } } } アドバイスいただければ幸いです。

    • 締切済み
    • PHP
  • ini_setのpost_max_size

    お世話になります。 ini_setの「post_max_size」がなぜか正常に動作しません。「upload_max_filesize」はうまく動作するのですが・・・。 --------------------------------------------- $aaa = ini_set("upload_max_filesize","2M"); $bbb = ini_get("upload_max_filesize"); $ccc = ini_set("post_max_size","3M"); $ddd = ini_get("post_max_size"); --------------------------------------------- ↑これを実行すると以下のように表示されます。 --------------------------------------------- aaa=16M bbb=2M ccc= ddd=8M --------------------------------------------- 本来「ccc=8M」、「ddd=3MB」となるはずなのですが..。$cccを単体で実行してもうまくいきません。 上記から分かりますように、実行環境のphp.iniの設定は、 memory_limit = 64M post_max_size = 8M upload_max_filesize = 16M となっています。マニュアルには 「memory_limit >= post_max_size >= upload_max_filesizeでなければならない」 とありますので、実際は「upload_max_filesize」を「post_max_size」の8M以下に設定し直さなければならないとは思うのですが、これがini_setがうまくいかない原因になり得るでしょうか? 何かご存知の方がいらっしゃいましたら教えて下さい。PHPのバージョンは4.2.2です。

    • ベストアンサー
    • PHP
  • GET値が消えてしまう

    どうも、Flash初心者です。 やりたい事は、ボタンをクリックした時に、 GET値をつけたURLに遷移したいのですが、 やってみると、遷移はしますが、GET値が消えてしまいます。 actionScript2.0で、以下の様に書きました。 on (release) { var firstName:String = "Gus"; var lastName:String = "Richardson"; var age:Number = 92; getURL("check_1.html", "_self", "GET"); } パブリッシュプレビューから、ボタンをクリックすると、 画面が遷移し、GET値も付いているのですが、 Flashが埋め込まれているHMTLからボタンをクリックすると、 画面は遷移しますが、GET値が付かない状態です。 HTMLに問題があるのかもしれませんが、 調べても辿り着きませんでした。 どなたか分かる方、教えてください。

    • ベストアンサー
    • Flash
  • GETとPOSTを同時利用したい

    wordpressで下記のようにPOSTを使用して遷移先のメールフォームにデータを渡しています。 コードの作成は(http://blog.goo.ne.jp/xmldtp/e/0884dbe92721ab84cb27d212ca631094)を参考にしました。 <a href="" onclick="document.mail_form.submit();return false;" > <img src="@@@.png" alt="お問い合わせフォーム"> </a> <form action="<?php echo get_permalink( @@@ ); ?>" method='post' name="mail_form" target="_blank"> <input type='hidden' name='post_id' value="<?php echo $post->ID; ?>"> </form> これをそのまま流用し、<form>内の遷移先URLに『?view=english』を追加して英語版での表示切替をしようとしたのですが、これをつけるとPOSTの情報が遷移先に渡らなくなりました。 <form action="<?php echo get_permalink( @@@ ); ?>?view=english" method='post' name="mail_form" target="_blank"> <input type='hidden' name='post_id' value="<?php echo $post->ID; ?>"> </form> どのようにすればPOSTの内容を維持したまま遷移先URLにGETの文字列を追加させることができますか?

    • ベストアンサー
    • PHP
  • PHPでの変数引渡しに関して

    "HTML -> PHP1 -> PHP2"という順序で変数の引渡しを行いたいと考えております。 "HTML -> PHP1"への変数引渡しは正常なのですが、"PHP1 -> PHP2"への変数引渡しがうまくいかない状態です。 1) "HTML -> PHP1" ・HTML <form name="toroku" method="POST" action="result.phtml">  <input type="text" name="word1" size="34"></td></tr>  <input type="text" name="word2" size="34"></td></tr>  ・・・・ </form> ・PHP1(result.phtml) <? require('../include/init.inc'); $word1 = $_POST{'word1'}; $word2 = $_POST{'word2'}; $word3 = $_POST{'word3'}; $email = $_POST{'word7'}; $word8 = $_POST{'word8'}; $seireki = $_POST{'seireki'}; $tuki = $_POST{'tuki'}; $nitiji = $_POST{'nitiji'}; $result = pg_query($con, "select .........."); $rows = pg_num_rows($result); var_dump($HTTP_POST_VARS); ?> <FORM action="./result2.phtml" method="post"></FORM> ・結果 array(8) { ["word1"]=> string(6) "テスト"       ["word2"]=> string(6) "テスト"       ["word3"]=> string(6) "テスト"       ["word7"]=> string(16) "test1@test.co.jp"       ["word8"]=> string(16) "test1@test.co.jp"       ["seireki"]=> string(4) "2008"       ["tuki"]=> string(2)"01"       ["nitiji"]=> string(2) "01" } 2) "PHP1 -> PHP2" ・PHP2 <? var_dump($HTTP_POST_VARS); ?> ・結果 array(0) { } 2)でHTMLの変数を継続して渡したいのです。 ご存知のかたがいたしたら、ご教示頂ければと思います。

    • ベストアンサー
    • PHP
  • PHPの$_FILES

    RHEL6.3の環境で、 php.ini の upload_max_filesize と post_max_sizeを[30M]にして ファイルアップロードの動作確認をしていますが、 [25M]のファイルをアップロードすると$_FILESの変数の中身が取得できるのですが、 [35M]のファイルをアップロードすると$_FILESが空の状態で var_dumpで出力しても 配列の構造にもなっていません。 サイズ超過のときでもちゃんと$_FILES で情報を取得したいのですが、できない原因として 何が考えられるでしょうか? また対処法はありますでしょうか? 回答お願いします。

    • ベストアンサー
    • PHP
  • PHPがHTMLのformの値を受け取らない

    状況: ファイルアップロードを作成しようとしたところPHPがHTMLのformのsubmitした物を受け取らない。 しかしHTML側にjavascriptを読み込ませ XMLHttpRequest によってsendすると受け取れる。 環境: apache 2.2.4 php 5.2.3 ------------HTML <html><body> <form action="test.php" enctype="multipart/form-data"> <input type="text" id="name"> <input type="file" id="file"> </form> </body></html> ------------PHP <?php header('Content-type: text/plain; charset=UTF-8'); print "\$_POST:";var_dump($_POST);print "\n"; print "\$_FILES:";var_dump($_FILES);print "\n"; ?> ------------結果 $_POST:array(0) { } $_FILES:array(0) { } ------------ 原因がphp.iniなのか、httpd.confなのか、はたまたそれ以外に原因があるのかがさっぱり判らず質問しました。 どうやったらHTMLのformの値をPHPで受け取れますか?

  • postしたコンテンツの取得

    いつもお世話になっております。 PHPでHTTPでPOSTされたコンテンツを受け取るサンプルとして以下のような スクリプトを作成しました。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sample</title> </head> <body> <p><?php var_dump(file_get_contents('php://input')); ?></p> </body> </html> そしてデータの送信側のPHPスクリプトとして以下のようなものを作成しました。 <?php function post_request($url, $data, $referer='') { // Convert the data array into URL Parameters like a=b&foo=bar etc. $data = http_build_query($data); // parse the given URL $url = parse_url($url); if ($url['scheme'] != 'http') { die('Error: Only HTTP request are supported !'); } // extract host and path: $host = $url['host']; $path = $url['path']; $port = $url['port']; var_dump($url); $fp = fsockopen($host, $port, $errno, $errstr, 30); if ($fp){ // send the request headers: fputs($fp, "POST $path HTTP/1.1\r\n"); fputs($fp, "Host: $host\r\n"); if ($referer != '') fputs($fp, "Referer: $referer\r\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ". strlen($data) ."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $data); $result = ''; while(!feof($fp)) { // receive the results of the request $result .= fgets($fp, 128); } } else { return array( 'status' => 'err', 'error' => "$errstr ($errno)" ); } // close the socket connection: fclose($fp); // split the result header from the content $result = explode("\r\n\r\n", $result, 2); $header = isset($result[0]) ? $result[0] : ''; $content = isset($result[1]) ? $result[1] : ''; // return as structured array: return array( 'status' => 'ok', 'header' => $header, 'content' => $content ); } $fileHandle = fopen("/home/a/text.txt", "rb"); $fileContents = stream_get_contents($fileHandle); fclose($fileHandle); var_dump(post_request('http://ipaddress/rawpost.php',$fileContents)); ?> 上記PHPスクリプトによってPOSTされた結果のHTMLの var_dump(file_get_contents('php://input')) の部分はstring(0)となりました。 HTTPのPOSTのコンテンツ部分を取得するには どのようなスクリプトを記載すればよいのでしょうか。 どなたかご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • javascriptのsubmitを使ってデータをpost送信したい。

    javascriptのsubmitを使ってデータをpost送信したい。 aaa.phpというファイルに複数のチェックボックスがあり、リンクをクリックしたときに チェックされた値のみをbbb.phpへ引き渡したいです。 自分なりに書いてみましたが、bbb.phpへは遷移するものの、データが表示されません。 document.form1.method部分をGETにすると、データは表示されますが、POSTにすると うまく引渡しができません。 的外れな書き方をしているかもしれませんが、どなたかご教授いただけませんでしょうか? よろしくお願いいたします。 【追記】 チェックボックスの数は固定ではなく変動があり、値も実際はランダムです。 デザインの都合上どうしてもaタグでしか記述が出来ません。 ------------------------------------------------------------------------------ 【aaa.php】 <script language="JavaScript"> <!-- function mailform() {  var i = 0;  var chkvalue = "";  var count = 0;  var chk = document.getElementsByName('no');  for(i=0; i<chk.length; i++) {   if (chk[i].checked == true) {    chkvalue += chk[i].value;    count++;   }  }  if(count == 0) {   alert("チェックされていません。");   return false;  } else {   document.form1.action = "./bbb.php";   document.form1.method="post";   document.form1.submit();  } } //--> </script> <a href="#" onClick="send()">bbb.phpへ遷移する</a> <form name="form1">  <input type="checkbox" name="no" value="1"><br />  <input type="checkbox" name="no" value="2"><br />  <input type="checkbox" name="no" value="3"><br />  <input type="checkbox" name="no" value="4"><br /> </form> 【bbb.php】 var_dump($_POST["no"]);

専門家に質問してみよう