こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ローカルのphpファイルが表示できません

初めて投稿させて頂きます。

Linux初心者です。
初めてphpを使ったwebサイトを作成しようとしています。

先日、php5とapache2を導入しました。

今phpの動作確認中なのですが、
既定の/var/wwwにある.phpファイルは正常に画面に表示されるのですが、
自分で作成した/home/ユーザー名/public_html にそのファイルを持って行って、
ブラウザ(Iceweasel)のファイルを開くで開くと、ダウンロードをする画面となってしまい、困っています。

Google Cromeでも、同様で、
検索バーに「file:///home/ユーザー名/public_html/XXX.php」を入力すると、
XXX.phpが勝手にダウンロードされてしまいます。

あらゆるサイトを見て設定ファイルも確認したのですが、状況が
変わりません。

申し訳ありませんが、
お分かりの方がいたら、どなたかご教示頂けないでしょうか。

以下に状況をまとめます。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

■ディストリビューション
 Debian

■phpバージョン
 PHP 5.4.4-14

■apacheバージョン
 Apache 2.0

■現象
 /var/wwwのphpinfo.phpは正常に表示されるが、
 自分で作成した/home/ユーザー名/public_htmlのphpinfo.phpを表示しようとすると
 Iceweaselではダウンロードの画面が出、Google Cromeではダウンロードされてしまいます。

■設定したファイル
 (1)/etc/apache2/mods-available/mime.conf に以下3行を追記(並べて3行記述しています)。
  **********************************************************
   LoadModule php5_module modules/libphp5.so
   AddType application/x-httpd-php .php
   AddType application/x-httpd-php-source .phps
  **********************************************************
  /etc/apache2/mods-enabled/mime.conf にも上記の変更が反映されていました。

 (2)以下5つのファイルの
  DocumentRoot を「/var/www」→「/home/ユーザー名/public_html」に、
  <Directory /var/www/>タグを<Directory /home/ユーザー名/public_html/>に変更。

  ・/etc/apache2/sites-available/default  
  ・/etc/apache2/sites-available/default-ssl
  ・/etc/apache2/sites-available/mysite
  ・/etc/apache2/sites-available/mysite~

  ・/etc/apache2/sites-enabled/mysite

(3)/etc/apache2/mods-available/dir.conf にindex.phpの記述があることを確認済み。

(4)sudo /etc/init.d/apache2 restart でapache2を再起動。

■備考
 ・httpd.confは存在していないため、何もしていません。
 ・変更点ではないですが、/etc/apache2/mods-enabled/php5.conf の以下の記述はコメントアウトされていない状態であることを確認済みです。
 <IfModule mod_userdir.c>
 <Directory /home/*/public_html>
   php_admin_value engine Off
 </Directory>
 </IfModule>

投稿日時 - 2013-10-30 13:01:22

QNo.8326918

困ってます

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

> 既定の/var/wwwにある.phpファイルは正常に画面に表示される
これはHTTPの仕組みを通しているからです。

クライアントのブラウザでhttp://localhost/hoge.phpへアクセス
  ↓
クライアントからサーバ(Apache)へHTTPリクエストが出される
  ↓
サーバがhoge.phpを実行し、出力をHTTPレスポンスとしてクライアントへ返す
  ↓
クライアントのブラウザでWebページが表示される


これに対して、ブラウザの[開く]メニューによるアクセス、file://で始まるURIでのアクセスは
ファイルそのものに対するアクセスです。
ブラウザがファイルを読み込んで表示するだけです。
(ファイルの内容が表示されるか、ダウンロード処理が行われるかはブラウザの設定によります)
Apacheは関係ありませんから設定を変更しても意味がありません。

投稿日時 - 2013-10-30 14:03:23

お礼

貴重なご回答、誠にありがとうございました。

>これに対して、ブラウザの[開く]メニューによるアクセス、file://で始まるURIでのアクセスは
>ファイルそのものに対するアクセスです。
>ブラウザがファイルを読み込んで表示するだけです。

そうだったのですね…。
ただ、ファイルを開いているだけの動作だったのですね。
確かに、考えてみればそうですね……。

>(ファイルの内容が表示されるか、ダウンロード処理が行われるかはブラウザの設定によります)
>Apacheは関係ありませんから設定を変更しても意味がありません。

この回答を頂いて、本当にすっきりしました。
Apacheの設定が原因とばかり考えていました。
ブラウザの設定だったのですね。

この質問を投稿した後、実は「localhost/phpinfo.php」で見ていたものは、
「/var/www/」にあるphpinfo.phpではなく、
「/home/ユーザー名/public_html」にあるphpinfo.phpだったことに気付きました。

なので、「表示されない」という問題は自己解決できたのですが、
理由まで分からなかったのです。

それが、今回ご教示頂けたことで理解できました。

本当にありがとうございました。

質問もこれにて締めようと思います。

投稿日時 - 2013-10-30 15:31:40

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)