web-dev-qa-db-ja.com

Apacheが.PHPファイルを解釈しない

最近、サイトからOpenSUSE OSバージョン11.4をダウンロードしてサーバーとして使用しました。そのために、Apache/2.2.17とPHP5がデフォルトでダウンロードされているサーバーエディションをダウンロードしました。元気

これで、Apacheを正常に起動し、test.phpファイルをdocumentRootディレクトリに配置しました。 test.phpは<?php phpinfo() ?>のみを含みます

次に、ブラウザを使用して_http://localhost/test.php_と入力しましたが、ブラウザがphpinfo()の表示内容を表示しないという問題がありました。代わりに、test.phpを開くか保存するかを尋ねられました...これは私を狂わせている...私はたくさんググったが解決策はなかった

これは/etc/Apache2/conf.d/php5.confです

_<IfModule mod_php5.c>
    AddHandler application/x-httpd-php .php4
    AddHandler application/x-httpd-php .php5
    AddHandler application/x-httpd-php .php
    AddHandler application/x-httpd-php-source .php4s
    AddHandler application/x-httpd-php-source .php5s
    AddHandler application/x-httpd-php-source .phps
    DirectoryIndex index.php4
    DirectoryIndex index.php5
    DirectoryIndex index.php
</IfModule>
_
3
Ala ABUDEEB

試す価値のあることの1つは、プロジェクトがユーザーディレクトリ(public_htmlフォルダー)にないこと、またはphp5.confの構成(一部の構成では/etc/Apache2/mods-available/php5.conf)がそのような解釈を許可することを確認することです。

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
    SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
    </FilesMatch>
    # 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.
    #<IfModule mod_userdir.c>
    #    <Directory /home/*/public_html>
    #        php_admin_value engine Off
    #    </Directory>
    #</IfModule>
</IfModule>
4
Gabriel

中身を確認できます

nano /etc/Apache2/mods-available/php5.conf

また、あなたはチェックすることができます

Sudo dpkg -S php5 | grep libapache2-mod-php5 

mods対応のphp5.confがあるかどうかを示します

私はそこにいます:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

この正規表現は.php5に一致しますが、何らかの理由で.phpに一致しなかったことに注意してください。

ソリューション

apt-get remove libapache2-mod-php5 ; apt-get purge libapache2-mod-php5; apt-get install libapache2-mod-php5

次に開く

nano /etc/Apache2/mods-enabled/php5.conf 
  1. そして交換する

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
    

    <FilesMatch ".+\.ph((p[345]?)|t|tml)$">
    
  2. または単に実行する

    Sudo Perl -pe 's|\Q.ph(p[345]?\E|.ph((p[345]?)| if $. <= 3'  /etc/Apache2/mods-available/php5.conf
    

そしてApacheを再起動します

Sudo service Apache2 restart
2
test30

PHPドキュメンテーションを見て、設定が正しいことを確認してください

http://www.php.net/manual/en/install.unix.Apache2.php

これはhttpd.confにあるはずです

LoadModule php5_module modules/libphp5.so

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
1
Michael B.

私は同じ問題に対して次の解決策を思いつきました。 /etc/httpd/conf/httpd.confの次のディレクティブを変更します。なぜこれがApacheの動作を変えたのかを理解する必要がありますが、それは私にとってはうまくいきました。

これを変える:

<Directory />
  Options FollowSymLinks
  AllowOverride None
</Directory>

これに:

<Directory />
  Options None
  AllowOverride None
</Directory>
0
Pete

Suse/opensuseのApacheモジュールは/ etc/sysconfig/Apache2から有効になり、必要に応じてphpモジュールを含め、SuSEconfigを実行してApache2サービスを再起動します:)

http://wiki.Apache.org/httpd/DistrosDefaultLayout#openSUSE_and_SLES_.28Apache_httpd_2.2.29

0
GioMac

php5Apache_MODULES="actions alias auth_basic authn_file authz_Host authz_groupfile authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir reqtimeout authn_core authz_core"/etc/sysconfig/Apache2で始まる行に追加しました。

0
Almino Melo

どういうわけかmod_php5が無効になっているようです

(ルートとして)試してください

a2enmod php5
service Apache2 restart

次に、ページに再度アクセスしてみてください

0
Jodie C

おそらくApache2-mod_phpがインストールされていません。 zypper install Apache2-mod_php5または任意のパッケージ名zypper search Apache | grep phpが表示されます。

0
Andrey Regentov