web-dev-qa-db-ja.com

Apacheはそれらを表示する代わりにphpファイルをダウンロードしています

OSとサーバーの情報

  • CentOS 6.4(ファイナル)
  • Apache 2.2.15
  • PHP 5.5.1

以前php 5.3.xをインストールしていましたが、アップグレードすることにしました。私は最初にphp 5.3.xをアンインストールしてからphp 5.5.1をインストールしましたが、インストールが完了した後にApacheはそれらをダウンロードしたばかりのphpファイルを解析しませんでした。私はここでstackoverflowで同様の質問をチェックしました、しかしそれらのどれもこれまで私を助けませんでした。

記録として、私のhttpd.confとphp.confにはphpを動作させるべきであるがそうではない以下の行があります。

AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php

どうぞよろしくお願いします。ありがとうございました。

編集:

これらの行はphp.confにあります。

<IfModule !worker.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

編集:

を削除することによって

AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml

Apacheはもはやファイルをダウンロードしません。現在、Apacheはソースコードを公開していますが、その一部ではありません。追加した

AddType text/html .php

しかし、運はありません。

84
Anthony Gainor

Phpの正しいAddTypeはapplication/x-httpd-phpです。

AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps

Phpモジュールがロードされていることも確認してください。

LoadModule php5_module        modules/mod_php55.so

Apacheを設定しているときは、別のブラウザからページを表示しようとします - chromeが結果を頑固にキャッシュし、別のブラウザでソースコードをダウンロードし続ける日がありました。

72
Mihkel

たくさん苦労した後、私はついに問題を解決しました。

あなたがそれを実行する代わりに.phpファイルをダウンロードするよう促されるならば、これは完全な解決策です:私はあなたがすでにPHP5をインストールしていて、まだこのエラーを受けていると思います。

$ Sudo su
$ a2enmod php5

これです。

それでもエラーが発生するのであれば:

Config file php5.conf not properly enabled: /etc/Apache2/mods-enabled/php5.conf is a real file, not touching it

その後、次の操作を行います。

結局、ファイルはmods-enabledに格納されるべきではなく、むしろmods-availableに格納されるべきです。次に、mods-availableに格納されているファイルを指すように、シンボリックリンクをmods-enabledで作成します。

最初にオリジナルを削除してください。

$ mv /etc/Apache2/mods-enabled/php5.conf /etc/Apache2/mods-available/

次にシンボリックリンクを作成します。

$ ln -s /etc/Apache2/mods-available/php5.conf /etc/Apache2/mods-enabled/php5.conf

あなたの問題が解決したことを願います。

15
Ravi Shankar

私は今日この問題に遭遇しました、そして記述された解決策のどれも私のために働きませんでした。だからここにもう一つの考えられる原因があります:

あなたが好きなものがあれば

AddHandler x-mapp-php6 .php3 .php4 .php .phtml

webコンテンツフォルダの.htaccessファイルでは、PHPスクリプトが機能しなくなる可能性があります。私の場合、サーバはx-mapp-php6タイプを知りませんでした。なぜなら、その.htaccessファイルは、Webサイトのコンテンツを転送したときに別のWebホストからインポートしたものだからです。

.htaccessファイルからAddHandler行を削除するだけで解決しました。

14
markus

これはあなたのPHPに必要なモジュールが足りないために起こっているかもしれません。 php7がインストールされていると仮定して、利用可能なphp7モジュールを検索してください。

Sudo apt-cache search php7-*

上記のコマンドはインストールに利用可能なすべてのPHP7モジュールを一覧表示します。あなたは、モジュールのインストールを始めることができます、

Sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json
5
Noushad

Addtypeディレクティブを見てください。

Apacheがブラウザに.php5のような拡張子を持つスクリプト用にapplication/phpのドキュメントタイプを送信していると伝えているように見えます。実際、Apacheはスクリプトがtext/htmlを出力していることをブラウザに伝えることになっています。

これを試してください。

AddType text/html .php

上記の提案に関して、PHPスクリプトを出力していることをブラウザに通知する必要があります。これは私にとっては珍しい考えのように思えました。私はそれをグーグルしました、そしてウェブ上でそれについてかなりの議論があることがわかりました。どうやらあなたがPHPスクリプトを送っていると言いたい場合があるかもしれません(Apacheがスクリプトを実行してtext/htmlを発行することになっているとしても)、そしてブラウザが単にしない場合もありますその特定のMIMEタイプを認識できません。

ブラウザのキャッシュをクリアすることは常に良い考えです。

これが役に立つ場合には、CentOS 5.9を実行しているサーバーからの/etc/httpd/conf.d/php.confファイルのコピーをここに示します。

#        
# PHP is an HTML-embedded scripting language which attempts to make it                                             
# easy for developers to write dynamically generated webpages.                                                  
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
5
Sam Azer

あなたの.htaccessにこのようなものがあれば…AddHandler application/x-httpd-php53 .php .php 5 .php 4 .phpそれからそれをコメントアウトして、もう一度これを更新してみてください。

4
user252566

私は同じ問題を抱えています。 Apacheは特定のWebサイトからphpファイルをロードするのではなく、ただダウンロードするだけです。私はこの記事とその答えを読み、私は.htaccessファイルの最後の場所にこの行を書いたのを見ました。

AddHandler x-mapp-php5.5  .php

私はそれをコメントしました、そして、すべてはうまく働きます。

ありがとうございます !!!

3
Ladislao Garcia

Linux環境で誰かがphp7を使っている場合

必ずphp7を有効にしてください

Sudo a2enmod php7

MysqlサービスとApacheを再起動します。

Sudo systemctl restart mysql
Sudo systemctl restart Apache2
2
MedoAlmasry

5.3から5.4にアップグレードした後、私は以前に同様の問題を抱えています。しかし、私の設定は、私がDebianを実行していて、PHP5 Apache/cgiモジュールではなくPHPページを管理するためにfcgidを使用しているのとは少し違って見えます。それで私がアップグレードした後、それは私のfcgidセットアップと衝突して、もはやPHPファイルを実行しないだろうphp5_cgiもインストールしました。

私はApacheモジュールを無効にしてApacheを再起動しなければなりませんでした

a2dismod php5_cgi
/etc/init.d/Apache2 restart

Php5_cgiモジュールが邪魔にならなくなったら、fcgidはPHPページを再び提供することができました。

2
derchris

Nginxが動作しているのにphpがApacheで動作するように設定されている可能性もあります。確認するには、service nginx statusservice Apache2 statusを実行してどちらが実行されているかを確認します。 nginxが実行されていて、Apacheが実行されていない場合は、Sudo service nginx stop; Sudo service Apache2 startを実行するだけで、サーバーは期待どおりにphpファイルを提供するようになります。

1
hexicle

私はこの問題を抱えていました。 nginxとApacheの両方がインストールされており、起動時に自動的に起動していることがわかりました。問題は、nginxが最初にhttpポートにバインドしていたため、Apacheが起動できなかったことです。

1
dshepherd

私は似たような症状を抱えていましたが、もう一つの解決策:/etc/Apache2/mods-enabled/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.
1
qbolec

私はこれを追跡するのに2日間費やし、私は自分のPHPスクリプトを間違ったディレクトリに置いていたことを知りました。

標準のUbuntuインストールでは、スクリプトを/var/wwwに入れていました。それらは/var/www/htmlにあったはずです。

私はPHP作業を始めたばかりなので、私の解決策があなたが経験したバージョン変更に関連するものかどうかはわかりません。

1
Craig Smilovitz

これで問題は解決しました(私はphp7をインストールしました)。

Sudo apt-get libapache2-mod-php7.0をインストールしてください。

SudoサービスApache2の再起動

1
Marouen Mhiri

わかりました...私はすでにこの質問に1.000.000の答えがあることを知っています - しかし、私はこれを考え出して少なくとも6有効時間を費やしました。私はそれを何百回もグーグルしましたが、それについての単一の投稿を見つけられませんでした。だから私は私がここに私の問題に解決策を追加することにしました。

結論

/etc/Apache2/[[SERVER-NAME].conf-ファイルの.conf-filesでこれら2行をコメントアウトしたとします。

php_admin_value engine Off
IPCComTimeout 31

彼らが何をしているのか、彼らがどうやってそこにたどり着いたのか私にはわかりません - しかしそれは私の.conf-ファイルのどれにでもあります。そしてそれらの行を削除して シンボリックリンクがあることを確認してください/etc/Apache2/sites-enabled/-フォルダーに入れても、index.phpはダウンロードされず、すべて正常に動作します。

ストーリー全体

VirtualMinをUbuntu 16.04 VPSにインストールしました。私はPHPバージョン7.2にアップグレードしました。その後間もなく、私はUbuntuのバージョンを更新し、 'Kernel Offset:Disabled'エラーを起こしました。それで、私は最新のUbuntuバージョンを削除しなければなりませんでした - そして私のOSが再び起動したとき:BOOM!私のVPS上のすべてのサイトで、表示されるのではなく単にindex.phpがダウンロードされました。

私はあらゆる種類のものを試しました:

  • PHP7.2を削除し、PHP5.6をインストールしました(私は今、PHPバージョンはそれとは関係がないことを知っています;それは仕事を必要とするApache設定です)。
  • 既存のインストールで、Apacheモジュールを有効または無効にしようとしましたが、運がありませんでした。
  • それから私は 完全にApacheを削除しました そしてそれを再びインストールしました、そこで問題の後はまだそこにありました
  • VirtualMin(Webmin >> Servers >> Apache Webserver)でVirutal Serverの設定を試してみました。
  • 単一の仮想サーバーの設定をチェックしました(Virtualmin >>システム設定>>設定の再チェック)...このステップは、Apacheのどのモジュールが欠けているかを教えてくれたので、とても素敵でした。どこで私はa2enmod [MODULE_NAME]でそれを可能にすることができました。そして、私は周りでグーグルによってモジュール名を見つけました。検証のこのステップを通過する前に、約6〜8モジュールをアクティブにしなければなりませんでした。キャッシュがなくなるまでに数分かかりました。したがって、これを行うのは面倒なステップでした。
  • そして最後に、シンボリックリンクと一緒に、上記の結論を導き出しました。そして、それがうまくいきました。私は私のVPSのすべてのサイトでそれを通過しなければなりませんでした。
0
Zeth

上記のいずれでもうまくいかない場合は、

コメントアウトしてみてください

SetHandler ....

を使用してApacheを再起動します。

/etc/init.d/httpd restart

それはうまくいくはずです!

0
Cosmo Arun

私はこの種の問題を抱えています。これが私がそれを解決する方法です。 Apacheをインストールした後、このコマンドを使用してPHPをインストールしました。

Sudo apt-get install php libapache2-mod-php

それは正しく実行されますが、私は。phpファイルをApacheに要求します、PHPスクリプトを実行せずにそれを与えます。

それからPHPが有効になっていることを確認します。

$ cd /etc/Apache2
$ ls -l mods-*/*php*

しかし、結果は表示されませんでした。インストールされたPHPパッケージをチェックします。

$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "

種類の異なるPHPコンピュータにインストールされているバージョン。それからapt-get purgeを使ってPHPパッケージを前のリストから削除します。

Sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json

再インストールしますPHP

Sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

PHPモジュールがロードされていることを確認してください

$ a2query -m php7.0

有効になっていない場合:

$ Sudo a2enmod php7.0

再起動Apacheサーバ

$ Sudo systemctl restart Apache2

最後に、PHPプロセスをチェックApache

空のファイルを作成する

Sudo vim /var/www/html/info.php

このコンテンツをinfo.phpに追加して保存します。

<?php
  phpinfo();
?>

ブラウザで確認してください。

http://localhost/info.php

正しく表示されます。これはだれにでも役立つと思います。

0

Php5を古いバージョンから5.5.9(Mint 17でインストールされたバージョン)にアップグレードするとき、私はOPと同様の問題を抱えていました。

私は自分のローカルネットワーク上のマシン上でLAMP設定を実行しています。それを使って実際のライブサーバーにそれらの変更をアップロードする前に、Webサイトへの変更をプレビューします。だから私は実際のサイトの完全なローカルミラーを維持します。

アップグレード後、実際のサイトで完全に実行され表示されるファイルは表示されないか、ローカルマシンではHTMLのみが表示されます。 PHPは解析されませんでした。 phpinfo()コマンドが機能したので、phpがそれ以外では機能していることがわかりました。ログはエラーを生成しませんでした。ページのソースを表示すると、実際のP​​HPコードが表示されました。

次のコードを含むtest.phpページを作成しました。

<?php phpinfo(); ?>

これはうまくいった。 <?php<?に変更したときにコマンドが機能しなくなったことを発見しました。私のすべてのphpサイトは<?の代わりに<?phpを使っていますが、これは理想的ではないかもしれませんが、それは現実です。私は/ etc/php5/Apache2に行き、 "short_open_tag"を探し、値をOffからOnに変更することで問題を解決しました。

0
Slip

Virtualminを使っているなら、/ etc/Apache2/sites-availableのApache設定でこれらの行をコメントアウトしてみてください。

  #RemoveHandler .php
  #RemoveHandler .php7.0
  #php_admin_value engine Off
0
TomoMiha

PHP56

vim /etc/httpd/conf/httpd.conf

LoadModule php5_module        libexec/Apache/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

私はこの問題を抱えていて、あなたが実際にあなたのサーバー設定でプレイしたことがなければ、あなたの問題はあなたの。htaccess fileの90%です

あなたは。htaccess file LOCALLYを修正するか、またはそれを削除するか(LOCALLY)

0
Dia