• ベストアンサー

ヘッダーは500エラー、ブラウザでは表示OKの場合

現在PHPで外部からのGET値を受信し、受信に成功した場合「OK」と出力しレスポンス200、失敗の場合はレスポンス500を返すプログラムを設置しているのですが、先日サーバー移転をしたところ、 http://www.hoge.com/sample.php?id=1 ブラウザげGET値を含むURLを叩くと問題なくOKと表示されるのですがヘッダーのみで送信をするとレスポンスが「Status: HTTP/1.0 500 Internal Server Error」となってしまいます。 これはなぜでしょうか? 試しにPHP(sample.php)のトップに明示的に「header("HTTP/1.0 200 OK");」と書いてみましたがこれでもやはりレスポンスは「500エラー」でした。 ブラウザで叩くと正しく表示され、レスポンスが500を返してしまうことについて解決方法などありましたらアドバイス等よろしくお願いいたします。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • tomaju
  • ベストアンサー率76% (84/110)
回答No.1

以下のようなプログラムを書いていらっしゃるのでしょうか。 <?php if(isset($_GET['id'])){ // 受信に成功したら header('HTTP/1.0 200 OK'); echo "OK\n"; }else{ header('HTTP/1.0 500 Internal Server Error'); } exit; > ヘッダーのみで送信をすると ブラウザではないプログラムからリクエストするということでしょうか? print_r($_GET); などとしてどのような値を受信できているか確認してみてはどうでしょうか。 > 試しにPHP(sample.php)のトップに明示的に「header("HTTP/1.0 200 OK");」と > 書いてみましたがこれでもやはりレスポンスは「500エラー」でした。 トップより後で header("HTTP/1.0 500 Internal Server Error"); を 書いていれば、そちらで上書きされると思います。 http://php.net/manual/ja/function.header.php > オプションのパラメータ replace は、ヘッダが 前に送信された類似のヘッダを置換するか、 > または、同じ形式の二番目の ヘッダを追加するかどうかを指定します。 > デフォルトでは、この関数は 置換を行ないますが、二番目の引数に FALSE を指定すると、 > 同じ型の 複数のヘッダを強制的に生成します。

関連するQ&A

  • PerlでのHTTPヘッダのStatus変更

    内部処理の結果に応じて、成功の場合は「200 OK」、失敗の場合は「503 Service Unavailable」をHTTPヘッダのStatusに指定して返したいと思っています。 ヘッダを "Content-Type: text/html\n\n" だけにして返す場合は問題ないのですが、その前に "Status: HTTP/1.1 200 OK\n" や "Status: HTTP/1.0 503 Service Unavailable\n" を追加するとInternal Server Errorになってしまいます。 [現状] -------------------------------------------- $ret=system("コマンド"); $header = "Status: HTTP/1.1 200 OK\n"; $cmt = "OK"; if ($ret == 256) { $header = "Status: HTTP/1.0 503 Service Unavailable\n"; $cmt = "NG"; } $header .= "Content-Type: text/html\n\n"; print "$header"; print "$cmt"; exit; -------------------------------------------- なにか、Statusを変更する良い手段はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • phpで404エラーページが表示されません

    現在利用中のサーバ上で存在しないファイルをブラウザからアクセスすると、 「Not Found The requested URL was not found on this server.」 とエラーページが表示されます。 上記と同様のエラーページをアクセスの条件によって出力するためにphpスクリプトで header('HTTP/1.0 404 Not Found'); と記述していますが、空白のページしか表示されません。 header~の前に何かを出力している等などのエラーや警告が発生していないことは 確認してあります。 また、404ステータスが正常に返却されていることもheader情報のキャプチャで確認しています。 (ファイルが存在しない場合と同じ内容が返っています。) カスタムエラーの設定も特にしていません。 どのようなことが考えられるかお教え頂きたくお願い致します。

    • ベストアンサー
    • PHP
  • ブラウザでHTTPレスポンスがうけとれない

    単にIDを返すだけのWebサーバに、telnetから80番ポートにアクセスし、HTTPリクエストを送るとレスポンスを受け取れるのに ブラウザからアクセスするとレスポンスを受けとれずタイムアウトになってしまいます。 WireSharkでパケットを調べてみると、ブラウザからアクセスした場合も、 問題なくWebサーバからIDが返されていることは確認できました。 しかし、ブラウザではサーバからのレスポンス待ち状態が続き、しばらくするとタイムアウトになってしまいます。 また、他のPCのブラウザから該当のWebサーバにアクセスすると、 問題なくレスポンスをうけとりIDがブラウザに表示されることも確認しました。 何が原因でこういうことが起こるのでしょうか。 教えて頂けると大変助かります。 OS:Windwos 7 32bit ブラウザ:Explore8,Chrome サーバからのレスポンス(telnetでアクセスした際に取得したもの) HTTP/1.1 200 OK Content-Type: text/plain Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET Date: Mon, 20 Jan 2014 11:12:37 GMT Connection: close SYJ0P48

  • スペースを含んだパスにブラウザでアクセス出来ない

    CentOS7でApache HTTP server2.4を使用しているのですが、httpd.confで指定してあるDocumentRootディレクトリ下にスペースを含んだパスは、ブラウザに表示もされないし、アドレスを入力しても 500 Internal Server Errorとなります。スペースを含んだパスにアクセスできるようにする方法はないでしょうか?

  • ApacheでのHTTPヘッダーの編集

    ApacheでのHTTPヘッダーの編集についてご質問いたします。 Response HeaderのServerフィールドに新規に値を設定したいのです が、どうもうまくいきません。何か方法はあるのでしょうか? 具体的にいいますと、現状は Server:Apache… となっていますが、新たに"Value"を追加し Server:Apache…/"Value" または Server:Apache… Server:"Value" というようなヘッダーを生成したいと思っています。 (ちなみにIISだと簡単にできました。) なお、mod_headerモジュールは組み込まれております。 よろしくお願いいたします。

  • モジュールを使ってリクエストヘッダーの表示をさせたい

    宜しくお願いします。 ウェブサーバーにリクエストを送った際、 リクエストヘッダ レスポンスヘッダとあると思うんですけど、 レスポンスヘッダは下記の形で表示できるのですが、 リクエストの際のヘッダ情報(HOST:やReferer:など)を表示させる事ができません。 どなたか、モジュールを使った形でリクエストヘッダを表示させるプログラム記述をご教授願えませんでしょうか。 ※下記は実際にテストを行っているリクエストヘッダとレスポンスヘッダとソースを表示する記述例です。(レスポンスヘッダは正常に表示できているとおもうのですが・・。) #!/usr/bin/perl use HTTP::Request::Common qw(POST GET); use LWP::UserAgent; use HTTP::Cookies; my $ua = LWP::UserAgent->new; my $req = $ua->request(HTTP::Request->new(GET => "http://localhost/")); print "Content-type: text/html\n\n"; print $req3->headers_as_string([$endl]);#これを追加し表示される情報はリファレンスっぽくなってしまうのと、 #リクエストヘッダのHOST:やReferer:UserAgentなどの情報が入ってないので、 #モジュールを利用してリクエストヘッダを表示させてみたいです。 print $req->as_string; リクエストヘッダーのイメージは下記のような情報だと思うのですが、モジュールを使って表示させる事はできないでしょうか どなた様かご教授の程宜しくお願い致します。 HTTP/1.1 Accept: */* Referer: http://okwave.jp/search.php3 Accept-Language: ja User-Agent: Mozilla/4.0 (compatible ; MSIE 6.0; Windows NT 5.0) Host: okwave.jp Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=Shift_JIS

    • ベストアンサー
    • Perl
  • Fatal errorで困っています

    Windows Vista(64bit)上にてxamppで環境構築しています。 Apache、PHP、Mysqlなどの動作確認はしています。 C:\xampp\htdocs\hoge\ 以下にとあるオープンソースを入れてみましたところ ブラウザーで http://localhost/hoge/ アクセスすると Fatal error: Call to undefined function checkInstall() in C:\xampp\htdocs\hoge\index.php on line 9 というエラーが出てしまいます。 ちなみに、エラーの9行目は下記のChekInstallあたりです。 ======================= if(file_exists('./install/includes/settings.inc.php')){ require('./install/includes/settings.inc.php'); if(checkInstall() == false){ Header("Location: install/install.php"); } } ======================= 調べたところ、このオープンソースをディレクトリに配置して開けば http://localhost/hoge/admin/install.php にリダイレクトされて、ブラウザ上でインストール作業(データベースの繋ぎこみ) などができるようです。 一応 http://localhost/hoge/admin/install.php を 直接入力してみましたところ "; $FILES_ERR .= $ERR_5017.$ERR_5028; } if(!is_writable("../~~~~~~と長々とエラーが出ます ちなみに、これをローカルではなくレンタルサーバーに 上げてみたところ、問題なく admin/install.php から各種インストール設定を 行える様になっていました。 私のローカル環境での設定(php.iniなど)の問題かと思われます。 何かご指導いただける点がございましたら、何卒よろしくお願い致します。

    • 締切済み
    • PHP
  • DreamWeaverでSSIをつかったのですが、ブラウザで表示されません。

    インクルードするファイルには <!--#include file="ssi/header.html" --> を挿入してあり、Dreamweaverのデザインでは きちんと表示がされております。 それをサーバーへアップしてもブラウザ上では表示されません。 もちろん、header.htmlはサーバーへアップしてありますし インクルードのタグを書いているページはshtmlです。 サーバーもSSIは対応しています。 いろいろな過去ログを参照したのですがいまいち原因がわかりません。 階層が間違っているのかと思い、 <!--#include virtual="ssi/header.html" --> でもしてみましたが、やはり表示されませんでした。 ちなみに、ブラウザで表示されるもののソースをみると <!--#include file="ssi/header.html" -->の記述が残ってあります。 通常、上記のようなインクルードされたものは記述がなくなるはずなのですが、なぜか表示されております。 .htaccessなるものですればよいのか どうやってすればよいのかが全然わからず困っております。 どうか、ご教授下さいませ。

    • ベストアンサー
    • HTML
  • HTTPヘッダーとボディーを区切る改行コードについ

    CentOS5.8+Apatch2.2.14+PHP5.3.8の環境下で HTTPのリクエストをApatch+PHPで受付、PHPより下記コードで $str = "XXXXXXX"; $sjisstr = mb_convert_encoding($str, "SJIS"); header("Content-Type: text/html;charset=Shift_JIS"); echo $sjisstr; HTTPレスポンスを返していますが HTTPレスポンスのヘッダーとボディーを区切る改行コードが 0d0a 0d0a 0a0a となってしまいます。 0d0a 0d0a だけにする方法を知っている方 ご教示をよろしくお願いします。

    • ベストアンサー
    • PHP
  • ブラウザから直接HTMLを取得する方法

    IEの「表示」-「ソースの表示」のようなイメージで、現在ブラウザに表示されているHTMLを取得するのには、どのような方法があるでしょうか? MSXML等を利用してWebサーバからHTML(HTTPレスポンス)を取得する方法はネット上で見かけますが、ブラウザから直接HTMLの情報を取得したいのです。 どうぞ、宜しくお願いいたします。

専門家に質問してみよう