Apache(2.2.3)不提供在 CentOS 上运行的 PHP(5.2.6)

Apache(2.2.3)不提供在 CentOS 上运行的 PHP(5.2.6)

我在设置新域名时遇到了一些奇怪的问题;Apache 目前没有按要求提供 PHP 文件,而是强制下载 .PHTML 文件。

我已经使用 Google 搜索过,但没有找到任何修复方法。

这个问题有点奇怪,因为我目前在同一台服务器上运行其他网站,并且已经使用相同的配置运行了两年多,但他们没有遇到这个问题。

VirtualHost 配置如下

<VirtualHost *:80>
    DocumentRoot /var/www/vhosts/mydomain.com/httpdocs
    ServerAlias *.mydomain.com
    ServerName mydomain.com
    #AddHandler application/x-httpd-php .php
    #DirectoryIndex index.php
    <Directory />
        Options FollowSymLinks
        AllowOverride All
        Order deny,allow
        Allow from all
    </Directory>
    CustomLog "/var/www/vhosts/mydomain.com/logs/combined.log" combined
</VirtualHost>

正如您所见,它非常简单......

我尝试了以下方法,但无济于事

  • 确保 PHP 模块已加载
  • 确保 PHP 文件被 apache 视为 PHP 文件
  • 测试具有相同配置的其他站点

现在我不确定,但我认为这可能与安装 Plesk 并用于管理通过 Media Temple 托管的此服务器上托管的大多数(并非全部)域名有关

这当然是无法通过 Plesk 配置的域名之一,因为需要自定义 VirtualHost 配置,而 Plesk 根本不允许这样做...好吧,这很容易。

在联系 Media Temple 之前我先在这里发帖,因为上次我遇到 Apache 配置问题时,Media Temple 对这个问题几乎没有帮助,因为这超出了他们的支持范围,而且我没有 30 分钟的时间等待……

答案1

您是否尝试过使用 php 取消注释这些行?

#AddHandler application/x-httpd-php .php
#DirectoryIndex index.php

不应该#符号开始其行,将其注释掉。

另外,请确保您有php.conf在你的 apache 中conf.d/目录(或者您用于存放 conf 文件的任何目录)。

答案2

您可以尝试从控制台运行“php -v”命令,它会打印出您的 php 版本的通知,并附加来自您的 php.ini 配置文件的错误消息。

安装 PHP 5.2.6 后您是否重新启动了 Apache?

答案3

问题已解决...不确定如何或为什么,但显然复制same exact config which had already been attempted and failedPlesk 创建的域的文件夹结构和配置似乎可以解决这个问题......

最终配置

<VirtualHost myip:80>
    ServerAlias *.mydomain.com
    ServerName   mydomain.com
    DocumentRoot /var/www/vhosts/mydomain.com/httpdocs
    CustomLog  /var/www/vhosts/mydomain.com/statistics/logs/access_log plesklog
    ErrorLog  /var/www/vhosts/mydomain.com/statistics/logs/error_log
    <IfModule mod_userdir.c>
        UserDir /var/www/vhosts/mydomain.com/web_users
    </IfModule>
    <IfModule mod_ssl.c>
        SSLEngine off
    </IfModule>
    <Directory /var/www/vhosts/mydomain.com/httpdocs>
    <IfModule sapi_apache2.c>
        php_admin_flag engine on
        php_admin_flag safe_mode off
        php_admin_value open_basedir "/var/www/vhosts/mydomain.com/httpdocs:/tmp"
    </IfModule>
    <IfModule mod_php5.c>
        php_admin_flag engine on
        php_admin_flag safe_mode off
        php_admin_value open_basedir "/var/www/vhosts/mydomain.com/httpdocs:/tmp"
    </IfModule>
        Options -Includes -ExecCGI
    </Directory>
    <Directory /var/www/vhosts/mydomain.com/web_users>
    <IfModule sapi_apache2.c>
        php_admin_flag engine off
    </IfModule>
    <IfModule mod_php5.c>
        php_admin_flag engine off
    </IfModule>
    </Directory>
</VirtualHost>

请注意,这只是我不喜欢 Plesk 的另一个原因......

答案4

确保php_admin_flag engine正确部分包含的行是On。在某些 Linux 发行版中,此功能默认是禁用的。

如果您正在使用mod_userdirApache 扩展,请启用它(通过a2enmod userdir),并且您还必须编辑/etc/apache2/mods-enabled/php*.conf文件以启用上述标志。

相关内容