升级到 16.04。php7 无法在浏览器中运行

Dav*_*ght 71 upgrade php apache2 16.04

我刚刚从 14.10 升级到 16.04,但不确定如何在 apache 中配置 PHP 7。我确实修改了 php7.0.conf 文件以取消对最后几行的注释,重新启动 apache2 并且没有任何变化。

我是否需要更改 apache2 设置以允许 php?

PHP 从命令行运行,所以我确定 php 已正确安装。

此外,我在 phpadmin 上收到一个错误,说 mbstring 丢失。

Tho*_*ard 82

就像以前一样,您必须为 Apache 安装 PHP。

服务器指南

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

该命令将安装 PHP 和 Apache 2 PHP 模块。像以前一样简单地配置 Apache(sudo a2enmod php7.0我认为,会打开模块)。


您的mbstring问题类似 - 您需要安装该扩展程序:

sudo apt install php7.0-mbstring
Run Code Online (Sandbox Code Playgroud)

对于其他缺少的模块,也必须安装类似的东西。


Vid*_*uth 41

要将 php7 配置为与您的服务器一起运行,您需要进行一些配置:

1. 确保删除任何痕迹 php/php5

打开终端Ctrl+ Alt+T和:

cd /etc/apache2/mods-enabled
ls -la
Run Code Online (Sandbox Code Playgroud)

输出应该包含任何php5.confphp5.load,但如果这样做,做到以下几点:

# this is the proper way of disabling modules
sudo a2dismod php5

# run this only if the above command didn't remove the php5 sym-links
sudo rm php5.load
sudo rm php5.conf
Run Code Online (Sandbox Code Playgroud)

现在添加php7.0.confandphp7.0.load代替:

# this is the proper way of enabling modules
sudo a2enmod php7.0

# run this only if the above command didn't create the php7.0 sym-links
sudo ln -s php7.0.conf ../mods-available/php7.0.conf
sudo ln -s php7.0.load ../mods-available/php7.0.load
Run Code Online (Sandbox Code Playgroud)

的输出ls -la php*应如下所示:

lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.conf -> ../mods-available/php7.0.conf
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.load -> ../mods-available/php7.0.load
Run Code Online (Sandbox Code Playgroud)

处理完模块后,我们现在来到 /etc/apache2/conf-enabled目录。在这里也删除任何 php/php5 痕迹sudo rm <name>

然后,如果需要,请执行以下操作:

# the proper way of enabling configs
sudo a2enconf php7.0-cgi
sudo a2enconf php7.0-fpm

# do those commands only if the above didn't work out
sudo ln -s php7.0-cgi.conf ../conf-available/php7.0-cgi.conf
sudo ln -s php7.0-fpm.conf ../conf-available/php7.0-fpm.conf
Run Code Online (Sandbox Code Playgroud)

的输出ls -la php*应如下所示:

lrwxrwxrwx 1 root root 33 Apr 21 17:00 php7.0-cgi.conf -> ../conf-available/php7.0-cgi.conf
lrwxrwxrwx 1 root root 33 Apr 21 17:01 php7.0-fpm.conf -> ../conf-available/php7.0-fpm.conf
Run Code Online (Sandbox Code Playgroud)

2.重启Apache2

在重新启动 Apache 之前,请确保清除 Apacheerror.log然后重新启动:

sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

现在检查error.log通过发出cat /var/log/apache2/error.log | less(通过较少的管道使您可以轻松上下滚动,q退出输出)。

如果您error.log包含许多(我的字面意思是一堆),MIBS not found请执行以下操作:

sudo apt install libsnmp-dev
sudo net-snmp-config --snmpconfpath
sudo apt-get install snmp snmp-mibs-downloader
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

再次检查error.log它现在应该只包含 3 行:

[Sat Apr 23 01:39:07.504005 2016] [mpm_prefork:notice] [pid 1647] AH00169: caught SIGTERM, shutting down
[Sat Apr 23 01:39:08.685774 2016] [mpm_prefork:notice] [pid 9590] AH00163: Apache/2.4.18 (Ubuntu) mod_perl/2.0.9 Perl/v5.22.1 configured -- resuming normal operations
[Sat Apr 23 01:39:08.685938 2016] [core:notice] [pid 9590] AH00094: Command line: '/usr/sbin/apache2'
Run Code Online (Sandbox Code Playgroud)

现在应该正确配置带有 php7.0 的 Apache。

  • 使用 `a2enmod` 和 `a2dismod` 命令,而不是手动修改 `mods-available`/`mods-enabled` 中的链接(类似地,`a2enconf` 和 `a2disconf` 用于 `conf-{available,enabled}`)。 (2认同)

小智 14

我也遇到了这个问题。

它帮助我删除了所有 PHP 并重新安装了 php7。

所需要的只是:

sudo apt-get purge php*
Run Code Online (Sandbox Code Playgroud)

php7 将被删除,之后只需重新安装:

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0
Run Code Online (Sandbox Code Playgroud)


小智 8

我的情况不仅是 php 不起作用,而且 phpmyadmin 我也是这样一步一步地做的

sudo apt install php libapache2-mod-php
sudo apt install php7.0-mbstring
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
service apache2 restart
Run Code Online (Sandbox Code Playgroud)

然后到:

gksu gedit /etc/apache2/apache2.conf
Run Code Online (Sandbox Code Playgroud)

在最后一行我添加 Include /etc/phpmyadmin/apache.conf

解决所有问题


pat*_*ick 8

我为这个问题找到的解决方案是 short_open_tag 的默认 PHP.INI 设置。默认情况下,这设置为“关闭”。我的 PHP 代码以

   <?
Run Code Online (Sandbox Code Playgroud)

代替

   <?php
Run Code Online (Sandbox Code Playgroud)

如果启用了 short_open_tag(通过在我的 php.ini 中将 'Off' 更改为 'On')并重置 apache 服务器 ( sudo service apache2 restart),PHP 就会活跃起来。