PHP実行でファイルのダウンロードのダイアログが開く理由とは?

このQ&Aのポイント
  • PHP実行によりファイルのダウンロードのダイアログが開く理由を調査。
  • Debian GNU/Linux 3.0の環境でPHP4.3.7とapache1.3.31を使用した際の問題について解決策を提案。
  • ブラウザからファイルをダウンロードする際にダイアログが表示される原因と、ファイルのダウンロードが正常に行われるための設定について説明。
回答を見る
  • ベストアンサー

PHP実行でファイルのダウンロードのダイアログが開きます。

OSはDebian GNU/Linux 3.0です。 PHP4.3.7とapache1.3.31において PHPファイルが正常に開けません。 下記のファイルを作成しパーミッション777で FFFTPを用いてアップロードしました <? phpinfo(); ?> しかしながらブラウザでアクセスすると、ファイルの ダウンロードのダイアログが開きます。 設定はapache側のみしており、 <Directory /var/www> options All AllowOverride All Order allow,deny allow from all </Directory> addhandler cgi-script .cgi .pl addtype text/html .shtml addhandler server-paresd .shtml を変更しました。PHPの方は変更していません。 どうしてファイルのダウンロードのダイアログが 開くのでしょうか?

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

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

うちのサーバもDebian/Woodyですが、質問文を見たところ、 httpd.confでphpの設定をまったくしていないのでは? # grep -i php /etc/apache/httpd.conf LoadModule php4_module /usr/lib/apache/1.3/libphp4.so DirectoryIndex index.html index.htm index.shtml index.php AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps >を変更しました。PHPの方は変更していません。 「PHPの方」ってどういう意味ですか?

apache6
質問者

お礼

ご指摘の通り、httpd.confでphpの設定をまったくして いませんでした。ご指摘の通り、変更すると正常動作致しました。 ちなみにPHPの方とは、php.ini等の設定ファイルの 変更の意味でした。

関連するQ&A

  • cgiファイルを実行すると、「開く」や「保存」のダイアログが出てきて困

    cgiファイルを実行すると、「開く」や「保存」のダイアログが出てきて困ってます。 ■環境は以下のとおりです。 ・OS:windows7 ・CドライブにApacheをインストール ・ActivePerlインストール済み ■httpd.confの変更した箇所(現状下記の状態です) ・Option Indexes FollowSymLinks Includes ExecCGI ・AllowOverride All ※以下は先頭の「#」を削除 ・AddHandler cgi-script.cgi ・AddType text/html.shtml ・AddOutputFillter InCLUDES .shtml ■http://localhost/ にはアクセス出来てます。 以上、宜しくお願いします。

    • ベストアンサー
    • CGI
  • SSI される .inc ファイル内に PHP を記述したい…が…

    お世話になっております。 .html から、SSI で .inc ファイルを呼び出し、その inc ファイル 内に記述の PHP を実行したいと考えております。 例えば、test.html に   <!--#include virtual="../include/inc/meta.inc"--> のような記述があり、include.inc に   <?php echo "test"; ?> のように記述があった場合、php4 では test と表示されるのですが、 php5 では、   <?php echo "test"; ?> がそのまま出てきてしまいます。 php4 と php5 の httpd.conf の違いは   LoadModule php4_module C:/php446/sapi/php4apache2.dll   LoadModule php5_module c:/php525/php5apache2.dll の行のみです。(いずれかをコメントにし、4と5を切り替え) 以下、httpd.conf の SSI の動作に影響を及ぼすと思われる 行を抜粋します。(コメント行も含みます) 環境は WINDOWS&Apache2 です。 <Directory /> Options FollowSymLinks MultiViews Includes ExecCGI AllowOverride All </Directory> <Directory "C:/Program Files/Apache Group/Apache2/htdocs"> Options All AllowOverride None Order allow,deny Allow from all </Directory> AddType application/x-httpd-php .inc .html .php #AddHandler server-parsed .shtml .html #AddType text/html .shtml .html .inc AddOutputFilter INCLUDES .shtml .html .inc #<Files *.html> #ForceType text/html #SetOutputFilter INCLUDES #</Files> #<Files *.shtml> #ForceType text/html #SetOutputFilter INCLUDES #</Files> #<Files *.inc> #ForceType text/html #SetOutputFilter INCLUDES #</Files> 原因は php.ini ですかね? ご存知の方、ご教授下さい。

    • ベストアンサー
    • PHP
  • 助けてください!パーミッションの設定が出来ません。

    先日こちらの掲示板にて、Macintosh OSXでPHPファイルが動かないといった質問をしたものです。 http://oshiete1.goo.ne.jp/qa2719598.html それで解決後に自分が今公開しているサイトを見に行ったら、今まで見えていたCGIのページが突然you don't have permission to access 403 forbiddenになってしまいました。 それで、何度もターミナルでchmod 705 /Users/*/Sites/****.cgi とパーミッションの設定をしてもテストファイルすら見れなくなって しまいました。 <Directory /Users/*/Sites/cgi-bin> AllowOverride FileInfo AuthConfig Limit Options +ExecCGI AddHandler cgi-script .cgi </Directory> としていたのを、 <Directory /Users/*/Sites> AddType text/html shtml AddHandler server-parsed shtml AddHandler cgi-script cgi Options Indexes MultiViews ExecCGI Includes AllowOverride None Order allow,deny Allow from all </Directory> としただけなのですが、何が問題だったのでしょうか、、、、、。 誰か助けてください。よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • 403forbiddenがなおりません。

    以下はMacintosh板で聞いたものなんですが、あまり回答が得られないのでこちらでも書かせてください。 先日こちらのMacintosh掲示板にて、Macintosh OSXでPHPファイルが動かないといった質問をしたものです。 ?http://oshiete1.goo.ne.jp/qa2719598.html? それで解決後に自分が今公開しているサイトを見に行ったら、今まで見えていたCGIのページが突然you don't have permission to access 403 forbiddenになってしまいました。 それで、何度もターミナルでchmod 705 /Users/*/Sites/****.cgi とパーミッションの設定をしてもテストファイルすら見れなくなって しまいました。 <Directory /Users/*/Sites/cgi-bin> AllowOverride FileInfo AuthConfig Limit Options +ExecCGI AddHandler cgi-script .cgi </Directory> としていたのを、 <Directory /Users/*/Sites> AddType text/html shtml AddHandler server-parsed shtml AddHandler cgi-script cgi Options Indexes MultiViews ExecCGI Includes AllowOverride None Order allow,deny Allow from all </Directory> としただけなのですが、何が問題だったのでしょうか、、、、、。 誰か助けてください。よろしくお願いいたします。

    • 締切済み
    • CGI
  • ローカルのPHPファイルを表示できない

    LinuxでPHPの開発の勉強をしようとLAMPのインストールをしています。 EeePC 1000HにUbuntu 10.10を入れています。 昨日、Apache2.2 PHP5 MySQLを、apt-getで入れました。 info.phpというファイルを作り、 <?php phpinfo(); ?> と書いて保存しました。 Apache2.2では、localhostのデフォルトのDocumentRootが  /etc/apache2/sites-available/default に指定されていて、   /var/www  となっています。ここにinfo.phpを保存してfirefoxで  http://localhost/info.php を開くと、無事にinfoページがでました。ここまでは問題ありません。 次に、UserDirをa2enmodコマンドを使って設定し、 ユーザー(hoge)の homeディレクトリ以下にpublic_htmlをつくりました。この下に、 通常のindex.htmlファイルを保存して、 ~hoge/index.html が開くことも 確認しました。 その後で、 /home/hoge/public_html/ 以下にinfo.phpを保存し、 firefoxで開こうとすると、「アプリケーションの選択もしくは保存」という いつものダイアログが出てきてしまいます。 このように、/var/www に置いた場合と、public_html以下に置いた場合で firefoxの挙動が変わります。 apache2の /var/www へのアクセス指定するファイルが、 apache2/sites-available/defaultで、以下のようになっています。 <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> この中身の部分を、 apache2/mods-available/userdir.conf にコピペし、以下のようにしました。 <Directory /home/*/public_html>  Options Indexes FollowSymLinks MultiViews  AllowOverride None  Order allow,deny  allow from all   </Directory> apache2もリスタートしましたが、結果は変わりませんでした。 ここまでで行き詰まりました。 どなたか解決法を教えていただけませんか。 よろしくお願いします。

    • 締切済み
    • PHP
  • CGIフォルダ内でhtmlが見れません。。

    はじめまして。 ウェブサーバー(Vine Linux2.6 r4 , Apache1.3) を使用しています。 cgiフォルダをcgi-bin として、.cgi .pl の拡張子の ものは実行できるのですが、.html は forbidden 403 権限がありませんとしてエラーが出ます。 cgi ディレクトリの設定をこのようにしていますが、 <Directory /home/httpd/cgi-bin> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpeg .jpg .jpe AddHandler image/png .png AddHandler text/html .html .htm ←これでいけると思ってました。 </Directory> うまくいきません。 htmlファイルの属性は644になってます。 これを755とかに変更すると今度はinternal server error となってしまいます。 何が悪いのか おわかりになるかたご回答いただけますでしょうか。 よろしくお願いします。

  • xamppでcgiが動かない

    Mac OS10.6.8でXAMPPをインストールした後 htdocs/test/というフォルダを作って http://test/ となるような環境を作りました。 httpd-vhosts.confファイルには <VirtualHost *:80> DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/test" ServerName test </VirtualHost> <Directory "/Applications/XAMPP/xamppfiles/htdocs/test"> Options Indexes FollowSymLinks MultiViews Includes ExecCGI AddType text/html .shtml .html AddHandler server-parsed .shtml .html AddHandler cgi-script .cgi .pl AllowOverride All Order allow,deny Allow from all </Directory> このように記述しております。 http://test/test.cgiにアクセスしたら Error message: Premature end of script headers: test.cgi このように言われてしまいました。 これは何が原因なのでしょうか? パスが間違っているのかな?と思ったのですが、XAMPPを使った場合 test.cgiファイルのパスはどうすればいいのでしょうか? よろしければ教えて下さい。 ※ とりあえず usr/bin/perl としました。

  • Apache(Ver 2.4.4)の設定のエラー

    おはようござます。 Win VISTAです。 Apache(Ver 2.4.4)の設定をしています。(XAMPP 1.8.3) いろいろと参考書を見ながら、意味もわからずhttpdファイル(C:\xampp\apache\conf\httpd)のセキュリティの設定変更をしていますが、 「Access forbidden! 要求されたディレクトリへのアクセス権限がありません。 インデックスドキュメントが存在しないか、 ディレクトリの読み込みが許可されていません。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。」 というエラーが出て困っています。 セキュリティの設定の変更までは、正常にインストールされているとの確認画面が出ていましたので、この変更のミスが原因としか考えられません。 何とど宜しくお願いします。 ============================================================= httpdファイル(C:\xampp\apache\conf\httpd)の内容(変更後です) <変更前の内容はバックアップをとっていませんのでわかりません・・・・> <Directory /> AllowOverride none Require all denied </Directory> DocumentRoot "C:/xampp/htdocs" <Directory "C:/xampp/htdocs"> ・ ・ ・ # Order allow,deny # Allow from all Order deny,allow Deny from All Allow from localhost 127.0.0.1 # AllowOverride All ・ ・ # Require all granted </Directory> ・ ・ ・ <Directory "C:/xampp/cgi-bin"> AllowOverride None Options None # Order allow,deny # Allow from all Order deny,allow Deny from All Allow from localhost 127.0.0.1 # Require all granted </Directory> ============================================================= (C:\xampp\apache\conf\extra\httpd-xampp)<このファイルは全く書き換えていません。> <Directory "C:/xampp/php"> AllowOverride None Options None Require all denied <Files "php-cgi.exe"> Require all granted </Files> </Directory> ・ ・ ・ <Directory "C:/xampp/cgi-bin"> <FilesMatch "\.php$"> SetHandler cgi-script </FilesMatch> <FilesMatch "\.phps$"> SetHandler None </FilesMatch> </Directory> <Directory "C:/xampp/htdocs/xampp"> <IfModule php5_module> <Files "status.php"> php_admin_flag safe_mode off </Files> </IfModule> AllowOverride AuthConfig </Directory> </Directory> Alias /licenses "C:/xampp/licenses/" <Directory "C:/xampp/licenses"> Options +Indexes <IfModule autoindex_color_module> ・ ・ </IfModule> Require all granted </Directory> =============================================================

    • ベストアンサー
    • PHP
  • apacheのScriptAliasの記述について

    どなたか,ご教授いただければ幸いです。 WindowsXp Proでapacheを動かしています。次の設定で,cgiはうまく動作していました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> --- これに, http://www.miloweb.net/win/server/apache.html を参考にして,各ユーザーフォルダでcgiが実行できるようにしようと,次のようにしました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> <IfModule mod_userdir.c> UserDir \"C:/www/users/*/\" </IfModule> <Directory \"C:/www/users/*/cgi/\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jp </Directory> --- その結果, http://localhost/~user/ としてuserのホームページにアクセスできるようになったのですが, cgiについては, http://localhost/~user/cgi/・・・ としてもアクセスできません。どなたか原因をご教授いただけないでしょうか。 ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" の行を入れ替えると,\"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\"においてあるcgiが実行できなくなります。ScriptAliasは1行目しか有効でないようにも見えるのですが,上に書いた参考URLではできているようなので,戸惑っています。

  • cgi-binにアクセスできない

    apache初心者です。 Turbolinux6.0+apache1.3.12でHTTPサーバを試しているのですが、 cgi-binにあるファイルを見ようとするとHTTP 403エラーが出て表示できません。 属性とグループを色々変えてみたんですが、だめでした。 access.confで関係ありそうな所は <Directory /> Options None AllowOverride None order allow,deny allow from all </Directory> <Directory /home/httpd/html> Options Indexes Includes FollowSymLinks AllowOverride None order allow,deny allow from all </Directory> <Directory /home/httpd/cgi-bin> AllowOverride None Options FollowSymlinks ExecCGI order allow,deny allow from all </Directory> としていますが、なぜcgi-binの中身が見えないのかわかりません。 よろしくおねがいします。