PHP 7.2.0 已于 2017 年11月30日正式发布GA版,大家可以第一时间尝鲜了。这里我们介绍如何在 Debian 9 "Stretch" 上安装配置 PHP-7.2,以便大家及时升级。目前 Debian.cn 全站已稳定运行在 PHP-7.2 版本中。
本教程使用以下系统及组合: Debian 9 stretch 、Debian 8 Jessie、Ubuntu 16.04 LTS、Ubuntu 14.04 LTS / PHP-7.2 、PHP-7.1、PHP-5.6
安装 PHP-7
Ondřej Surý 的 PHP PPA 为 Ubuntu 16.04/14.04 提供了 PHP-7.2 版本,也通过个人网站为 Debian 9/8 提供 PHP7.2 版本。Ondřej Surý 是 Debian PHP 软件源的官方维护者之一,所以说稳定性和安全性基本上不是问题。软件源安装的 PHP 默认以 Unix Socket 的状态运行在 /run/php/php7.2-fpm.sock
,比使用 TCP 以 localhost:9000
的方式性能更好。
由于 PHP7.2 是新出的版本势必有不少的兼容性问题,我们建议等待开发者通知兼容PHP-7.2后,再进行升级,一些 PECL 扩展可能也不会及时适配该最新版。建议在你的网站业务低峰时段更新,并提前做好备份,以及回退的准备。Debian.cn 使用的是 WordPress 4.9 ,已支持 PHP7.2。
添加软件源
添加 GPG
wget -O /etc/apt/trusted.gpg.d/php.gpg https://mirror.xtom.com.hk/sury/php/apt.gpg
注意:这里我们使用了 Sury 的一个镜像网站,以便快速访问。Sury 镜像的原始地址为: https://packages.sury.org/php/ ,在美国访问比较慢。
安装 apt-transport-https
apt-get install apt-transport-https
添加 sury 软件镜像源
echo "deb https://mirror.xtom.com.hk/sury/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
更新软件源缓存:
apt-get update
安装软件
安装 PHP7.2:
apt install -y php7.2-fpm php7.2-mysql php7.2-curl php7.2-gd php7.2-mbstring php7.2-xml php7.2-xmlrpc php7.2-zip php7.2-opcache
如果你想要安装PHP-7.1, 替换这个命令中的 php7.2 为 php7.1 即可。PHP5.6 亦同。
设置 PHP 7
安装完成后,编辑 /etc/php/7.2/fpm/php.ini
替换换 ;cgi.fix_pathinfo=1
为 cgi.fix_pathinfo=0
快捷命令:
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/7.2/fpm/php.ini
配置修改了,需要重启生效,命令如下:
systemctl restart php7.2-fpm
更多日常的操作:
systemctl restart php7.2-fpm #重启 systemctl start php7.2-fpm #启动 systemctl stop php7.2-fpm #关闭 systemctl status php7.2-fpm #检查状态
安装更多组件
上面的一条命令安装 PHP 只是安装了部分 PHP 拓展,更多的软件可见:
root@debian.cn-service:~# apt-cache search php7.2 php-radius - radius client library for PHP php-http - PECL HTTP module for PHP Extended HTTP Support php-uploadprogress - file upload progress tracking extension for PHP php-yaml - YAML-1.1 parser and emitter for PHP php-mongodb - MongoDB driver for PHP php-apcu - APC User Cache for PHP php-imagick - Provides a wrapper to the ImageMagick library php-ssh2 - Bindings for the libssh2 library php-redis - PHP extension for interfacing with Redis php-memcached - memcached extension module for PHP, uses libmemcached php-apcu-bc - APCu Backwards Compatibility Module php-rrd - PHP bindings to rrd tool system php-uuid - PHP UUID extension php-memcache - memcache extension module for PHP php-zmq - ZeroMQ messaging bindings for PHP php-igbinary - igbinary PHP serializer php-msgpack - PHP extension for interfacing with MessagePack php-geoip - GeoIP module for PHP php-tideways - Tideways PHP Profiler Extension php-yac - YAC (Yet Another Cache) for PHP php-mailparse - Email message manipulation for PHP php-oauth - OAuth 1.0 consumer and provider extension php-gnupg - PHP wrapper around the gpgme library php-propro - propro module for PHP php-raphf - raphf module for PHP php-solr - PHP extension for communicating with Apache Solr server php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP php-gearman - PHP wrapper to libgearman php-phalcon - full-stack PHP framework delivered as a C-extension php-ds - PHP extension providing efficient data structures for PHP 7 php-sass - PHP bindings to libsass - fast, native Sass parsing in PHP php-lua - PHP Embedded lua interpreter libapache2-mod-php7.2 - server-side, HTML-embedded scripting language (Apache 2 module) libphp7.2-embed - HTML-embedded scripting language (Embedded SAPI library) php7.2-bcmath - Bcmath module for PHP php7.2-bz2 - bzip2 module for PHP php7.2-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.2-cli - command-line interpreter for the PHP scripting language php7.2-common - documentation, examples and common module for PHP php7.2-curl - CURL module for PHP php7.2-dba - DBA module for PHP php7.2-dev - Files for PHP7.2 module development php7.2-enchant - Enchant module for PHP php7.2-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) php7.2-gd - GD module for PHP php7.2-gmp - GMP module for PHP php7.2-imap - IMAP module for PHP php7.2-interbase - Interbase module for PHP php7.2-intl - Internationalisation module for PHP php7.2-json - JSON module for PHP php7.2-ldap - LDAP module for PHP php7.2-mbstring - MBSTRING module for PHP php7.2-mysql - MySQL module for PHP php7.2-odbc - ODBC module for PHP php7.2-opcache - Zend OpCache module for PHP php7.2-pgsql - PostgreSQL module for PHP php7.2-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary) php7.2-pspell - pspell module for PHP php7.2-readline - readline module for PHP php7.2-recode - recode module for PHP php7.2-snmp - SNMP module for PHP php7.2-soap - SOAP module for PHP php7.2-sqlite3 - SQLite3 module for PHP php7.2-sybase - Sybase module for PHP php7.2-tidy - tidy module for PHP php7.2-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP php7.2-xmlrpc - XMLRPC-EPI module for PHP php7.2-zip - Zip module for PHP php7.2-xsl - XSL module for PHP (dummy) php7.2 - server-side, HTML-embedded scripting language (metapackage) php7.2-sodium - libsodium module for PHP