如何安装PHP 7?


116

PHP 7 昨天发布了,我想尝试一下。

PHP 7.0.0附带了新版本的Zend Engine,许多改进和新功能,例如

  • 改进的性能:PHP 7的运行速度是PHP 5.6的两倍
  • 显着减少内存使用
  • 抽象语法树
  • 一致的64位支持
  • 改进的异常层次结构
  • 许多致命错误转换为异常
  • 安全随机数生成器
  • 删除了旧的和不受支持的SAPI和扩展
  • 空合并运算符(??)
  • 返回和标量类型声明
  • 匿名类
  • 零成本主张

php.net


可以在当前的Ubuntu版本上安装它吗?

是否存在当前的限制或已知的兼容性问题?



1
PHP 7是Ubuntu 16,Xenial上的默认设置。
Buttle Butkus

Answers:


180

您可以执行以下操作:

sudo apt-get install python-software-properties software-properties-common
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update

(可选)清除PHP 5:

sudo apt-get remove php5-common -y

或直接清除它,包括配置文件:

sudo apt-get purge php5-common -y

最后安装PHP 7:

sudo apt-get install php7.0 php7.0-fpm php7.0-mysql -y

(可选)之后清理不需要的软件包:

sudo apt-get --purge autoremove -y

另外,您可以使用此脚本脚本或本Blog上的说明从源代码安装PHP 7.0 。

编辑:

PHP5现在已 PHP7 替换为Ubuntu 16.4中的默认PHP,因此,要在Ubuntu 16.04上安装PHP7:

sudo apt-get install php7.0 

要么

sudo apt-get install php

12
谁负责ppa?是由zend正式支持的吗?
k0pernikus

19
@ k0pernikus Zend在其Zend Server之外没有任何官方支持:-) Ubuntu的维护者支持官方的Ubuntu软件包。此PPA是OndřejSurý的个人努力。Ondrey是Debian的PHP树的正式所有者,Debian是Ubuntu的上游。看到这里:qa.debian.org/developer.php?login=ondrej%40debian.org
Palantir

4
无论如何,他的PHP PPA非常受欢迎,以至于Magento官方发行版发布了5.5和5.6版本的广告:devdocs.magento.com/guides/v2.0/install-gde/prereq/…–
Palantir

3
JFTR memcached尚未在上游准备好用于PHP 7.0。我没有看过内存缓存,在主要重写包装脚本之后仍在消除较小的错误。
oerdnj 2015年

4
@Xeridea试试sudo apt-get install libapache2-mod-php7.0,然后sudo a2enmod php7.0重新启动Apache
andrewtweber 2015年

21

您有两种选择:

  • 等到有包含PHP7的新Ubuntu版本发布

    Ubuntu不会向现有Ubuntu版本的大多数软件发布主要的新版本。要获得主要的新版本,您需要等到较新版本的Ubuntu。

  • 安装第三方版本,例如从PPA安装

    PPA不受Ubuntu的发布时间表或策略的约束,因此它们可以自由地更频繁地更改版本,等等。Tshilidzi Mudau的答案中提到的PPA是一种使PHP保持最新状态的流行方法。

    sudo add-apt-repository ppa:ondrej/php
    

    PPA并未提供与Ubuntu提供的版本相同的正式Ubuntu支持,并且由于时间表和策略的不同,其质量或安全性标准也可能不同。在这种情况下,使该PPA可用的开发人员在此社区中是众所周知的。


1
以及从源代码安装的选项。
j0h

18

这是我的命令列表,用于完全更新PHP及其依赖关系,包括phpMyAdmin(完整的LAMP堆栈):

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php-7.0
sudo apt-get update
sudo apt-get purge php5-fpm
sudo apt-get install php7.0-cli php7.0-common libapache2-mod-php7.0 php7.0 php7.0-mysql php7.0-fpm php7.0-curl php7.0-gd php7.0-bz2

现在您有了PHP7。让我们开始使用phpMyAdmin :(如果您已经安装了PHP7,请从此处开始)

cd /var/www/html/
sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.5.3.1/phpMyAdmin-4.5.3.1-all-languages.zip
sudo unzip phpMyAdmin-4.5.3.1-all-languages.zip
sudo mv phpMyAdmin-4.5.3.1-all-languages/ phpmyadmin/
sudo mkdir -m 777 phpmyadmin/config/
sudo /etc/init.d/apache2 restart

3
libapache2-mod-php7.0正是我需要的,谢谢!
Jacer Omri


7

上面的过程不适用于我的Ubuntu 15.10服务器,所以我想我会分享一些有用的方法,以防其他人发现它有用。

首先,我必须删除某些关键的PHP 5模块:

sudo apt-get -y purge php5 libapache2-mod-php5 php5 php5-cli php5-common php5-curl php5-gd php5-imap php5-intl php5-json php5-mcrypt php5-mysql php5-pspell php5-readline php5-sqlite

然后删除一些多余的东西:

sudo apt-get autoremove

然后安装PHP 7.0:

sudo apt-get install php7.0

然后,由于PHPMyAdmin被删除,Apache2无法启动,因此我不得不删除配置文件(我可以将其移动):

sudo rm /etc/apache2/conf-enabled/phpmyadmin.conf

然后,我必须重新启动Apache2:

sudo service apache2 restart

然后运行了PHP 7.0(已通过确认PHPINFO();

但是我发现使PHPMyAdmin正常工作的唯一方法是手动安装/升级它,否则源中提供的最新版本尚不支持PHP 7。

**编辑:我现在已经找到了一种将PHPMyAdmin更新到兼容版本的方法,而不必从GIT进行克隆或从源代码进行手动编译,因此在下面添加了此内容:

首先添加此存储库,更新源列表并进行升级(注意:如果在升级到PHP7时已将其删除,则需要安装而不是升级它):

sudo add-apt-repository ppa:nijel/phpmyadmin
sudo apt-get update
sudo apt-get dist-upgrade

但是,在安装过程中(在我的服务器上)它必须运行数据库升级脚本,upgrade_column_info_4_3_0+.sql但这失败,并显示以下错误:

mysql said: ERROR 1060 (42S21) at line 28: Duplicate column name 'input_transformation'

我选择忽略该错误并完成升级。安装后,我在打开.sql升级脚本/usr/share/phpmyadmin/sql/upgrade_column_info_4_3_0+.sql

我手动运行了脚本,删除了两个令人讨厌的行,试图创建两个已经存在的列(要删除的代码):

ALTER TABLE `pma__column_info`
ADD `input_transformation` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
ADD `input_transformation_options` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '';

最后,我不得不在处编辑配置文件/etc/phpmyadmin/config.inc.php并添加以下两行:

$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

在此之后,PHPMyAdmin被成功更新并启用了扩展功能。希望这对其他人有帮助。



3

我认为ppa已在16.04 LTS中添加了。

  1. 只是做sudo apt-get install php7.0就可以了。
  2. 通过运行检查是否已安装 php --version
  3. 另外,您可以info.php在Apache的文档根目录中创建文件。
  4. /var/www/html/目录中
  5. sudo gedit /var/www/html/info.php
  6. 将以下内容添加到文件中:<?php phpinfo(); ?>。注意:由于您是自己创建的,因此该文件是空白文件。
  7. 现在重新启动apache sudo service apache2 restart
  8. 在您的Web浏览器中,http://localhost/info.php这将为您提供有关php的完整信息。

希望这可以帮助 :)


1
我不必将其添加到Apache2吗?
Arlen Beiler

它不是PPA,而是正式的ubuntu版本。
杰夫·普基特

2

我收集了一些不同的资源并解决了许多问题,以在Ubuntu 15.04和15.10上完全设置PHP 7的构建。尽管它不是Debian软件包脚本,但它确实设置了Ubuntu依赖关系和配置。资源可以在这里找到。

您可能需要选择仅master版本的发布分支,然后重新运行脚本。


2

我知道这可能是个坏主意,但这是我如何使php7与Ubuntu Server 12.04.5(i386)的安装一起工作的方式:

须藤nano /etc/apt/sources.list

然后在末尾附加以下内容:
 

deb http://us.archive.ubuntu.com/ubuntu/可信任的主要受限宇宙multiverse
deb http://archive.canonical.com/ubuntu可信赖的伙伴

然后像往常一样更新:

sudo apt-get更新

在Apache服务器上安装PHP 7后,可能必须将文件移动到新目录才能工作:

sudo mv / var / www / * / var / www / html /
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.