如何安装 PHP 7?

hg8*_*hg8 119 php php7

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

PHP 7.0.0 带有 Zend 引擎的新版本,许多改进和新功能,例如

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

php.net


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

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

Tsh*_*dau 183

您可以执行以下操作:

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
Run Code Online (Sandbox Code Playgroud)

可选择清除 PHP 5:

sudo apt-get remove php5-common -y
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get purge php5-common -y
Run Code Online (Sandbox Code Playgroud)

最后安装 PHP 7:

sudo apt-get install php7.0 php7.0-fpm php7.0-mysql -y
Run Code Online (Sandbox Code Playgroud)

之后可以选择清理不需要的包:

sudo apt-get --purge autoremove -y
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用此脚本脚本或按照此博客上的说明从源安装 PHP 7.0 。

编辑:

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

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

或者

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

  • @k0pernikus Zend 不正式支持 Zend Server 之外的任何东西:-) Ubuntu 的维护者支持官方 Ubuntu 软件包。此 PPA 是 Ondřej Surý 的个人努力。Ondrey 是 Debian 中 PHP 树的正式所有者,它位于 Ubuntu 的上游。请参阅此处:https://qa.debian.org/developer.php?login=ondrej%40debian.org (19认同)
  • 谁负责ppa?zend官方支持吗? (12认同)
  • 无论如何,他的 PHP PPA 非常受欢迎,以至于官方 Magento 发行版宣传 5.5 和 5.6 版本:http://devdocs.magento.com/guides/v2.0/install-gde/prereq/php-ubuntu。 html (4认同)
  • @Xeridea 尝试`sudo apt-get install libapache2-mod-php7.0`,然后`sudo a2enmod php7.0`,然后重新启动Apache (4认同)
  • JFTR memcached 还没有为 PHP 7.0 做好上游准备。我还没有研究过 memcache,在对打包脚本进行了重大重写后,仍在解决较小的错误。 (3认同)

tho*_*ter 22

您有两个选择:

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

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

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

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

    sudo add-apt-repository ppa:ondrej/php
    
    Run Code Online (Sandbox Code Playgroud)

    PPA 没有与 Ubuntu 提供的版本相同的官方 Ubuntu 支持,并且由于不同的时间表和政策可能具有不同的质量或安全标准。在这种情况下,提供此 PPA 的开发人员是这里的社区众所周知的。


Jar*_*ski 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
Run Code Online (Sandbox Code Playgroud)

现在你有了 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
Run Code Online (Sandbox Code Playgroud)

  • `libapache2-mod-php7.0` 正是我所需要的,谢谢! (3认同)

Jef*_*ett 10

对于 Ubuntu 16.04,PHP7 现在是默认的官方上游版本。

sudo apt install php
Run Code Online (Sandbox Code Playgroud)

这是在 16.04 上设置 LAMP 堆栈的便捷指南


Rob*_*son 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
Run Code Online (Sandbox Code Playgroud)

然后删除一些遗留的额外内容:

sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

然后安装 PHP 7.0:

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

然后,当 PHPMyAdmin 被删除时,Apache2 无法启动,所以我不得不删除配置文件(我本可以移动它):

sudo rm /etc/apache2/conf-enabled/phpmyadmin.conf
Run Code Online (Sandbox Code Playgroud)

然后我不得不重新启动Apache2:

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

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
Run Code Online (Sandbox Code Playgroud)

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

mysql said: ERROR 1060 (42S21) at line 28: Duplicate column name 'input_transformation'
Run Code Online (Sandbox Code Playgroud)

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

我手动运行脚本,删除试图创建 2 个已经存在的列(要删除的代码)的两条违规行:

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 '';
Run Code Online (Sandbox Code Playgroud)

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

$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
Run Code Online (Sandbox Code Playgroud)

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