• 締切済み

fpassthruを使用したダウンロード時に、内部サーバーエラー

現在、PHP関数のfpassthruを使用して、ファイルのダウンロードダイアログを開く処理を作成しています。 サーバーは、LinuxでApacheと組み合わせて使用しています。 今までは、問題無くダイアログを表示できたのですが、今回サーバーを新しく用意した所、新しいサーバーでダウンロードを行うと、HTTP500の内部サーバーエラーが発生します。 エラー箇所を調べた所、fpassthruの行でエラーが発生している様です。 古いサーバーとは、PHPやApacheのバージョンが若干異なり、設定もまったく同じでは無いのですが、なぜエラーになるか分かりません。 Apacheの、httpd.confの設定が問題の様な気がしますが、どの部分が影響しているか判断できません。 どなたか原因の分かる方、教えて頂けないでしょうか?

みんなの回答

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.3

ソース全体を見ないと何も言えないですが、コマンドライン版PHPであれば、CGIの様に、フルパスで指定してやる必要があります。 /user/lib/php 等

ztkun
質問者

お礼

kusukusuさん ありがとうございました。 いろいろ試してみましたが、結論から行くと良く分からないと言う事になりました。 今回は仕方ないので、RedHatで行く事にします。 RedHatとDebianの違いと言ってしまえばそれまでですが、残念な結果になりました。 質問を出してから時間も立ちますし、とりあえず今回の質問は締め切りたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

どこかで見たことがあるソースかとと思えば、以前PHPLIBの権限でお話しした方ですね(^^; 勘ですが、HTTP500エラーが出ると言うことは、「以前はDOS版だったけど、今回はコマンドライン版だった」と言うことはあり得ませんか?

ztkun
質問者

補足

おっしゃる通り、PHPLIBの件でお世話になった者です。 kusukusuさんのおかげで、なんとか無事に出来上がったのですが、いざ本番環境に乗せてみると、HTTP500の冷たい文字が表示され、困っています。 実は、本番環境は私が用意していないので、何版かは分からないのですが、確認してみます。 ただ、以前動かしていた物は、RedHatのGUIベースの物でした。 確認してみないと分かりませんが、今回はコマンドライン版の可能性はあります。 但し、Debianにコマンドライン版があるか否かは、調べていないので分かりませんが... ちなみに、コマンドライン版だと不都合が出るのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

う~ん。。。これだけではたぶん誰も何も言えないと思います(^^; どんなコードですか?

ztkun
質問者

補足

出張に出ていたので、コードを載せるのが遅くなりました。 $downfileは、ファイルのパスが入っていると思って下さい。 ------------------------------------------ $fs=filesize($downfile); header("Content-Disposition: inline; filename=\"".basename($downfile)."\""); header("Content-Type: application/octet-stream"); header ("Content-Length: $fs"); $fp=fopen($downfile,"rb"); @fpassthru($fp); ------------------------------------------ コードとしては、こんな感じです。 ApacheとPHPについては、新旧のサーバーでバージョンを合わせていますが、LinuxはRedHatとDebianの違いがあります。 また、httpd.confやphp.iniも、それぞれのOSに合わせて、環境設定が異なります。 設定ファイルも、問題のありそうな箇所は、見比べてみましたが、どこが悪いか判断がつきません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Apache HTTP Server 2.2.4をダウンロードしてから

    Apache HTTP Server 2.2.4をダウンロードしてから、startボタンを押したのですが、下記のメッセージが出ました。どうしたら良いのでしょうか? Syntax error on line 133 of C:/Program Files/Apache Software Foundation/Apache2. 2/conf/httpd.conf: ServerAdmin takes one argument,The email address of the server administrator Note the errors or messages above, and press the <ESC> key to exit. というものです。PHP得意な方、教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • httpdのSSLRequireSSLエラー

    ネットで調べて、CentOS5.8上で、 最新のhttpd(Apache HTTP Server)2.2.23を、 RPMパッケージ化して、それを利用してインストールし、 最後に、Apacheの設定ファイル/etc/httpd/conf/httpd.confとして、 httpd.conf.rpmsaveをリネームして、 httpd.confとした上で、  ↓ service httpd configtest を実行したところ、 以前は、正常結果としてSyntax OKが表示されていたのですが、 今回は、以下のエラーが発生しています。  ↓ Syntax error on line9 of /etc/httpd/conf.d/webdav.conf: Invalid command 'SSLRequireSSL', perhaps misspelled or defined by a module not included in the server configuration そこでご質問ですが、 このようなエラーの原因(もしくは解消方法)について、 もしケース(パターン)として、 何か考えられることがございましたら アドバイスでも構いませんので 教えてください。 以上になります。よろしくお願いします。

  • Apache HTTP Server 2.2.4が起動しない

    PHPを独学しようと、PHPとApacheを自宅のマシン(WindowsXP Home edition)にインストールしてみました。 Apache HTTP Server 2.2.4をインストール後、Apacheを「start」で起動させようとしたら、下記の表示が出てApacheが起動しません。 httpd.exe: Syntax error on line 495 of C:/[Apacheのインストールディレクトリ]/conf/httpd.conf: Cannot load C:/[PHP5のインストールディレクトリ]/phpapache2.dll into server: \x8ew\x92\xe8(以下暫く羅列が続く) httpd.confの495行目の記述は「LoadModule php5_module "C:/[PHP5のインストールディレクトリ]/php5apache2.dll"」と、phpapache2.dllへパスが通っていると考えているのですが、初心者ゆえ戸惑っています。 全く初心者な質問だと思いますが、解決へお力添えを頂けたらと思います。宜しくお願い致します。

    • 締切済み
    • PHP
  • Apache HTTP Server 2.0.59でのエラー回避は?

    Apache HTTP Server 2.0.59 と php-5.2.5-Win32をインストールしました。 Apache HTTP Server 2.0.59をインストール後の動作確認は出来ました。 速効!図解プログラミング PHP+MySQLを見てApache HTTP Server 2.0.59 と php-5.2.5-Win32 を変えました。 Apache HTTP Server 2.0.59を起動するとコマンド プロンプトで以下の文面が出てしまいApache HTTP Server 2.0.59が起動できません。 何処を直せばいいでしょうか? Syntax error on lin 173 of C:/ProngramFiles/Apache Group/Apache2/conf/httpd.con f: Cannot load C:php/php5apache2_2.dell into server: \x8ew\92\xe8\x82\xb3\xea\x82\xbd\x83\x82\x83w\x83\x85\x81[\x83\x8b\82\xaa\x8c\x82\xc2\xc2\x82\xa9\x82\xe 8\x82\xdc\x82\xf1\x81b Note the errors or messages above, and press the <ESC> key to ext. 30...

  • PHPのエラーでapacheが起動できない

    教えてください。 Fedora Core4でWebサーバーを構築しているのですが、 httpd.confをコンパイルすると下記エラーが出てしまいます。 ”Syntax error on line6 of /etc/httpd/conf.d/php.conf:Cannot load /etc/httpd/modules/libphp5.so into server:libgmp.so.3: Cannot open shared object file:No such file or directory” /etc/httpd/conf.d/php.confのファイルをロードしないようにすればapacheは起動するのですが、PHPが使えません。 どう対処したらapacheとPHPが両方解決できますか? 宜しくお願いします。

  • Apacheでのcgi使用についてなんですが・・・

    windowsPCにApacheを組み込んでWWWサーバーとして使用していますが一つ問題が発生したのでどうかお力を分けてくださらないでしょうか? その問題というのは、Apacheで掲示板のcgiが使えないのです。httpd.confをcgiが使えるように書き換えましたし、別のAN HTTPDというサーバーソフトではちゃんと掲示板として機能します。cgi-binの中はcgiが使えるように設定したのですがやはりcgi-bin/bbs/bbs.cgiとするとCGIは動かなくなるのでしょうか?

  • TURBO Linux 8.0 Server プロモーション版 に PHPのインストール

    お世話になります。 TURBO Linux 8.0 Server プロモーション版をインストールした後、ftp.turbolinux.co.jpのtls-8.0からrpmをすべてダウンロードして、PHPやRUBYなど初期導入されていないものを追加導入しました。 TEST.PHP <?PHP PHPINFO(); ?> を/var/www/html/に作成し、http://localhostで表示しようとしてもうまくいきません。(test.phpが何も返答していないようです。test2.phpとやってみるとApacheがエラーを返します。) index.htmlを作成すると、それは問題なく表示されます。 /etc/httpd/conf/httpd.confの拡張子PHPとPHPSについてのコメントアウトは済んでいます。 Apacheの導入済の環境に、単純にRPMから導入しても駄目なのでしょうか? それとも、導入するモジュールの関係でしょうか? Apacheは、ダウンロードしたISOイメージに入っていたようです。

  • php-4.2.3が起動しません

    TurboLunux 8.0 Server、Apache1.3.26を使用しています。php-4.2.3をインストールし、httpd.confを設定してphpを起動したのですが、libphp4.soが読み込めないとのエラーメッセージが出てしまいました。 libphp4.soを探してみたのですが、見当たりません。 どうしたら良いですか?

    • 締切済み
    • PHP
  • Server error! Error 500

    RedHat7.3, apache-2でCGIが動くようにしたいのですが、 httpd.confをいじったりいろいろやってるのですが Server error! Premature end of script headers: tmp.cgi Error 500 と言われてしまいます。 Object not found!(Error404)ではないのでcgiファイルがあることは認識されてるようですが、 ”早すぎる終わり”をどうやったら回避できますか? 教えてください。

  • Apache起動時にエラー

    質問があります。 ApacheをSSLで起動し、IEからアクセスしようとしたら反応が遅く また、エラーログが大量に出ています。その後、表示ができませんと IEから出ています。 【ログ内容】 [notice] child pid XXXX exit signal Segmentation fault (11) また、Googleで調べたら、勘違いだったら申し訳ありません。 PHPからみで出るとかあったのですが、今回、とくにインストールしていません。知っている方が、いらっしゃったら教えてください。 環境としては、 OS Solaris10 Apache2.2.14とOpenSSL0.9.8lをソースでインストール 特に問題なくインストールできています。 切り分けで、OpenSSLをサンフリーからパッケージでインストールし Apacheをソースで再度、コンパイルしても現象は一緒でした。 OpenSSLの鍵・証明書の作成としては以下を実行 openssl genrsa -des3 -out server.key 1024 openssl rsa -in server.key -out server.key openssl req -new -key server.key -out server.csr -days 365  openssl x509 -in server.csr -out server.pem -req -signkey  server.key -days 365 httpd-ssl.confの設定 SSLCertificateFile /usr/local/apache2/conf/server.crt ↓ SSLCertificateFile /usr/local/apache2/conf/server.pem SSLCertificateKeyFile /usr/local/apache2/conf/server.key ↓(そのまま) SSLCertificateKeyFile /usr/local/apache2/conf/server.key http.confの設定 #Include conf/extra/httpd-ssl.conf ↓ Include conf/extra/httpd-ssl.conf 以上、よろしくお願いします。

このQ&Aのポイント
  • 私は高校生ですが、周りがBTSやジャニーズなどを好む中、私は80年代の曲やクラシックが好きです。
  • 最近の邦楽やKPOPの曲にはなじめず、昔の曲ばかりを聞いています。自分の感性が受け入れられず、孤独を感じています。
  • 将来音楽関係の仕事に就きたいと考えていますが、現代の音楽に合わせるために最近の曲や感性を好きになる必要があるのか悩んでいます。
回答を見る

専門家に質問してみよう