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


54

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

我已经安装了PHP,但是Apache似乎不想执行它。
人们建议向我添加“加载模块”行,httpd.conf但我没有该文件。

Answers:


103

输入:

sudo apt-get install apache2 php5 libapache2-mod-php5

将安装您需要的所有内容,并将启动支持PHP的apache服务器。

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

a2query -m php5

如果未启用,则加载:

sudo a2enmod php5

并重新启动Apache:

sudo service apache2 restart

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

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

安装:

sudo apt-get install apache2 php7.x libapache2-mod-php7.x 

校验:

a2query -m php7.x

加载:

sudo a2enmod php7.x

重新启动Apache:

sudo service apache2 restart

最好使用a2enmod在mods-available和mods-enabled之间手动复制文件。 a2enmod创建一个符号链接,因此您只有一个配置副本。
2014年

@ jkt123你是对的。感谢您的建议,我编辑我的答案。
girardengo 2014年

就我而言,它说“错误:模块php5不存在!” 它已安装
MarianKlühspies15

3
用php7 for ubuntu 16.04我已经按顺序执行了这些命令,,apt-get install libapache2-mod-phpa2query -m php7.0service apache2 restart
marlo

对于ubuntu 14.04:#a2query -m php7.0 php7.0(由站点管理员启用)仍未执行php代码
Ashish Karpe

19

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

信用


13

Ubuntu 16.04已迁移到PHP7。此单个命令将为您完成此工作:

sudo apt-get install apache2 php libapache2-mod-php

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


2

打开php.ininano在终端:

sudo nano /etc/php/php5.6/apache2/php.ini

然后更改:

short_open_tag = Off

short_open_tag = On

然后保存,然后重新启动apache2:

sudo systemctl restart apache2

1
或修复PHP脚本:-)This directive determines whether or not PHP will recognize code between <? and ?> tags as PHP source which should be processed as such. It is generally recommended that <?php and ?> should be used and that this feature should be disabled [...]
Nicolas Raoul

1

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

默认情况下,在启用了mods的目录中的php * .conf中禁用了此功能。我必须对其进行修改以将其注释掉:

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

要弄清楚那真是太痛苦了。

好吧,我怀疑有人会遇到这个特殊问题,但是我想添加一下是因为它对我来说很困惑,也许有人在做同样的事情。我猜除了我之外,没有人再使用〜/ user了。

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


0

我的情况有些不同。我从Ubuntu 19.04升级到19.10。在升级时,它安装了php 7.3(已经安装了php 7.2)。安装了2个版本的a2query -m php7.3 return 没有模块匹配php7.3

我发现的解决方案来自how-to-install-php-7-3-on-ubuntu

要将PHP 7.0设置为默认值,请运行

update-alternatives --set php /usr/bin/php7.0

要将PHP 7.2设置为默认值,请运行

update-alternatives --set php /usr/bin/php7.2

要将PHP 7.3设置为默认值,请运行

update-alternatives --set php /usr/bin/php7.3

在将Apache配置为使用PHP 7.3之前,我们需要通过键入以下内容来禁用旧版本的PHP 7.0:

a2dismod php7.2

现在,使用以下命令启用新安装的PHP 7.3版本:

a2enmod php7.3

重新启动Apache Web服务器以使更改生效:

sudo systemctl restart apache2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.