Apache 无法解释 .PHP 文件

Apache 无法解释 .PHP 文件

我最近从网站下载了 OpenSUSE OS 11.4 版,将其用作服务器。为了做到这一点,我下载了默认下载了 Apache/2.2.17 和 PHP5 的服务器版本.....好的,到目前为止一切正常

现在我成功启动了Apache,并在documentRoot目录中放置了一个test.php文件。test.php仅包含<?php phpinfo() ?>

然后我用我的浏览器输入了一些东西http://localhost/test.php ,但问题是浏览器没有显示phpinfo()应该显示的内容,而是问我是否要打开或保存 test.php...这让我抓狂...我在 Google 上搜索了很多,但没有解决方案

这是 /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>

答案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>

答案2

你可以检查里面有什么

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

您还可以检查

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

它会显示你的 php5.conf 是否启用了 mods

我到了那儿:

<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

答案3

查看 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>

答案4

听起来 mod_php5 不知为何被禁用了

尝试(以 root 身份)

a2enmod php5
service apache2 restart

然后尝试再次访问该页面

相关内容