PHP 脚本未在 Apache 服务器上执行

use*_*631 66 php apache2

我刚刚重新安装了 Apache 和 PHP5,但是当我访问我的文档根目录时,它只会下载一个“下载”文件。当我尝试documentroot /index.php 时,它只会下载 PHP 文件。

我安装了 PHP,但 Apache 似乎不想执行它。
人们建议在我的httpd.conf文件中添加一个“加载模块”行,但我没有那个文件。

gir*_*ngo 126

打字:

sudo apt-get install apache2 php5 libapache2-mod-php5
Run Code Online (Sandbox Code Playgroud)

将安装您需要的一切,并将启动支持 PHP 的 apache 服务器。

要验证 php 模块是否已加载,请键入:

a2query -m php5
Run Code Online (Sandbox Code Playgroud)

如果未启用,则加载:

sudo a2enmod php5
Run Code Online (Sandbox Code Playgroud)

并重新启动apache:

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

php7.x 更新(在 Ubuntu 16.04、16.10、18.04、18.10 上测试

感谢评论,我更新了 php7.x 的答案。

安装:

sudo apt-get install apache2 php7.x libapache2-mod-php7.x 
Run Code Online (Sandbox Code Playgroud)

核实:

a2query -m php7.x
Run Code Online (Sandbox Code Playgroud)

加载:

sudo a2enmod php7.x
Run Code Online (Sandbox Code Playgroud)

重启阿帕奇:

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

  • 对于带有 php7 的 ubuntu 16.04,我已按顺序执行了这些命令`apt-get install libapache2-mod-php`、`a2query -m php7.0`、`service apache2 restart` (3认同)

小智 19

另一个常见原因是<?默认的 php.ini 配置未启用php 短标签,因此在升级或重新安装后,该设置可能会关闭,并且 php 代码可能依赖于它。尝试替换<?<?php.

信用


dal*_*y42 17

Ubuntu 16.04已迁移到 PHP 7。这个单一的命令将为您完成这项工作:

sudo apt-get install apache2 php libapache2-mod-php
Run Code Online (Sandbox Code Playgroud)

libapache2-mod-php是一个安装 libapache2-mod-php7 的元包。


小智 7

我遇到了同样的问题,但我的特殊问题是独一无二的。我在用户目录中运行(使用 mod_userdir) - 这意味着您可以使用http://host.name.com/~username/example.php访问我的网页

默认情况下,在我的 mods-enabled 目录中的 php*.conf 中禁用此功能。我必须修改它才能将其注释掉:

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>
Run Code Online (Sandbox Code Playgroud)

弄清楚这是一个痛苦..

好吧,我怀疑是否有人遇到过这个特殊的问题,但我想我应该添加它,因为它对我来说是令人困惑的,也许有人正在做同样的事情。我想除了我之外没有人再使用 ~/user 了。

当然,在此之后你必须重新启动 apache。


小智 6

对于在未来近 6 年后(甚至更久!)从 Google 找到这篇文章的人,您可能会在使用该UserDir模块的同时使用 Apache 2 和 PHP 7 遇到此问题。

导致此问题的另一个可能原因可能是您尝试从模块的“用户目录”中运行脚本UserDir。默认情况下禁用在用户目录中运行 PHP 脚本。如果脚本位于public_html您的主文件夹中的目录中并且您尝试从http://localhost/~your_username.

要解决此问题,请打开/etc/apache2/mods-enabled/php7.2.conf. 您必须注释或删除底部的标签块:

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>
Run Code Online (Sandbox Code Playgroud)