web-dev-qa-db-ja.com

PHPページが正常に実行されずに常にダウンロードされる原因となるもの

VM上でUbuntuサーバーを実行して、さまざまなWebフォーラムソリューションをテストしています。私は〜/ public_html /をApache2 Webサーバーでアクセスできるように設定しましたが、これは問題なく動作します。

ただし、ブラウザで.phpファイルに移動すると(VMのip-address /〜username/phpfile.phpを使用)、本来のとおりに表示されません。代わりに、ファイルに保存するか、どのプログラムで開くかを尋ねます。興味深いことに、そのダイアログボックスはそれがphpファイルであることを認識しています。


システムに次のバージョンのphpがインストールされています。

PHP 5.3.2-1ubuntu4.5 with Suhosin-Patch (cli) (built: Sep 17 2010 13:49:46)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

そして次のサーバー:

Server version: Apache/2.2.14 (Ubuntu)
Server built:   Nov 18 2010 21:19:09


誰かがこれ/潜在的な解決策を引き起こしているかもしれないことを知っているなら、それは私をとても幸せにします:)

編集:この動作は〜/ public_html /ディレクトリー内のファイルでのみ明らかであったファイルを確認します。/var/www /内のすべてのphpファイルは正常に動作します。

賞品は、理由を説明できる人に贈られますか? :D(そして、賞品とは、よくできていることを意味し、実際の賞品はありません。)

6
Jon Cox

PHPのCLIバージョンのみが現在インストールされている可能性があります。

Sudo apt-get install php5

そしてApacheを再起動します

Sudo Apache2ctl restart

PHPモジュールがApacheにロードされていることを確認することもできます。

Sudo Apache2ctl -M

モジュールがロードされると、次のようになります

Loaded Modules:
 ...
 php5_module (shared)
 ...
Syntax OK
6
Mark Davidson

これをApacheの設定に追加してください

AddType application/x-httpd-php .php 
5
powtac

実際にユーザーのpublic_htmlディレクトリで同じ問題が発生し、/ etc/Apache2/mods-available/php5.confファイルにいくつかのコメント行が含まれていることがわかりました。

# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.

私はそれが言っていることをして、Apacheを再起動しました、そして問題はなくなりました。

2
Burak Yildiz

ファイルの内容を返すだけでなく、.phpファイルが要求されたときにphpインタープリターが開始されるように、Apacheを構成する必要があります。

これは、問題のディレクトリのhttpd.confで行う必要があります。次のようになります。

# Use for PHP 5.x:
LoadModule php5_module        modules/libphp5.so
AddHandler php5-script php 

# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php

AddType text/html       php

小切手 .htaccess(AddType行の場合)。不正なcontent-typeを引き起こすカスタムAddTypeがありました。 Firefoxは問題のデバッグに役立ちましたが、wgetを使用することもできます。

FirefoxWget

1
michalzuber

私は最近この問題を抱えており、このスレッドの他の原因をすべて取り除いた後、mod_php5拡張子(私のシステムでは/usr/lib64/Apache2/mod_php5.so)はペミションを実行していませんでした。

Chmodした後、うまくいきました。

忘れがちですが、これが起こる一般的な方法は、開始と終了を忘れることです<?php ?>タグ。

0
DampeS8N