当前位置: 首页>>技术教程>>正文


升级到16.04。 php7无法在浏览器中工作

, , , ,

问题描述

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

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

PHP从命令行工作,所以我确信php已正确安装。

另外,我在phpadmin上收到错误,说明缺少mbstring。

最佳解决方案

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

来自Server Guide

sudo apt install php libapache2-mod-php

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


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

sudo apt install php7.0-mbstring

对于其他缺失的模块,也需要安装类似的东西。

次佳解决方案

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

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

打开终端Ctrl + Alt + T并:

cd /etc/apache2/mods-enabled
ls -la

输出不应包含任何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

现在添加php7.0.confphp7.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

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

处理完模块后,我们现在进入/etc/apache2/conf-enabled目录。通过sudo rm <name>删除任何php /php5的痕迹

然后,如果需要的话:

# 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

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

2.重新启动Apache2

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

sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

现在通过发出cat /var/log/apache2/error.log | less检查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

再次检查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'

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

第三种解决方案

我也遇到了这个问题。

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

所需要的只是:

sudo apt-get purge php*

php7将被删除,之后只是为了重新安装:

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0

第四种方案

我的情况不仅是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

然后:

gksu gedit /etc/apache2/apache2.conf

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

这解决了所有问题

第五种方案

我发现此问题的解决方案是short_open_tag的默认PHP.INI设置。默认情况下,它设置为’Off’。我的PHP代码开始于

   <?

代替

   <?php

如果启用short_open_tag(通过在我的php.ini中将’Off’更改为’On’)并重置Apache服务器(sudo service apache2 restart)并且PHP恢复活动状态。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1157.html,未经允许,请勿转载。