Apache 不执行 PHP 文件,但让我下载它们

The*_*ist 15 apache2

因此,我使用教程设置了我的服务器,并且当我使用服务器的 IP 作为地址输入地址时 test.php 文件正常工作时

http://1.2.3.4/test.php
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用虚拟主机,浏览器只会提供下载文件而不是执行它。所以这:

http://blog.mydomain.com/test.php
Run Code Online (Sandbox Code Playgroud)

提供下载文件而不是执行脚本。

我在 /etc/apache2/apache2.conf 中为虚拟主机使用的代码如下:

Include /etc/phpmyadmin/apache.conf
Include /etc/apache2/mods-available/php5.conf

<VirtualHost *:80>
    DocumentRoot /path/to/vhosts/folder1
    ServerName www.mydomain.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /path/to/vhosts/folder2
    ServerName blog.mydomain.com
</VirtualHost>

NameVirtualHost *:80
Run Code Online (Sandbox Code Playgroud)

虽然我不得不说,当我重新启动 apache2 服务器时,我收到一条警告消息:

[....] Restarting web server: apache2
[Sun Jan 19 13:33:40 2014] [warn] NameVirtualHost *:80 has no VirtualHosts ... waiting [Sun Jan 19 13:33:41 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
Run Code Online (Sandbox Code Playgroud)

小智 20

我让它与这条线一起工作:

sudo apt-get install libapache2-mod-php7.0

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)


Teb*_*ebe 5

有时甚至会发生更糟糕的事情.... 我只是忘记安装 php

  • 我几乎不认为这可以称为真正的答案,但我想它差不多是。 (5认同)
  • 当您拥有合理数量的机器并且时间相当晚时,这绝对是一个有效的答案。 (3认同)

The*_*ist 0

我在这里找到了解决方案。事实证明我必须启用一些模块......


摘自user1075581Stack Overflow 回答

这最终让我走上了正确的道路:

http://www.linuxquestions.org/questions/linux-server-73/php-not-working-on-one-vhost-but-works-on-all-others-851093/

这是解决方案:

在本<Directory>节中,我添加了以下几行:

<IfModule sapi_apache2.c>
    php_admin_flag engine on
</IfModule>
<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>
Run Code Online (Sandbox Code Playgroud)

或者,将解决方案的编辑副本/粘贴到我的服务器上:

<Directory "/var/www/vhosts/A2/httpdocs">
    <IfModule sapi_apache2.c>
        php_admin_flag engine on
    </IfModule>
    <IfModule mod_php5.c>
        php_admin_flag engine on
    </IfModule>

    (Other configuration parameters)

</Directory>
Run Code Online (Sandbox Code Playgroud)