如何在Debian Linux 8.7/7.x上安装PHP 7
如何在Debian 8.x上使用PHP 7。
如何在Debian Linux 8.x服务器上安装和配置PHP 7?
如何在云中托管的Debian Linux 7.x Wheezy VPS服务器上安装PHP 7?
PHP 7是用于交付应用程序的动态脚本语言。
与PHP 5.6相比,您可以获得2倍的性能提升和50%的内存消耗,从而无需增加任何硬件即可服务更多的并发用户。
但是,Debian 8.x稳定版本不包含PHP 7。
在本教程中,您将学习如何在Debian 8.7服务器上安装PHP 7。
请注意,默认情况下,Debian 9.0 Stretch将包括PHP 7。
在Debian 8.7上安装PHP 7的步骤
- 首先,删除旧的PHP 5.6
- 配置PHP 7的额外存储库Dotdeb
- 安装PHP 7
- 重新配置Web服务器
- 重新启动Web服务器
要列出您的Debian版本,请执行:
$ lsb_release -a
使用以下语法保存现有的配置文件:
$ sudo tar zcvf /root/etc.backup.tar.gz /etc/
步骤1:删除旧的php 5.6(如果已安装)
首先,列出所有已安装的旧php 5.x软件包,执行:
$ dpkg --list | grep php | awk '/^ii/{ print }'
要删除旧的PHP 5.6软件包,请执行:
$ x="$(dpkg --list | grep php | awk '/^ii/{ print }')" $ sudo apt-get --purge remove $x
步骤2:配置dotdeb
Dotdeb是一个额外的存储库,可为您的Debian服务器提供最新的软件包(例如PHP 7及更高版本)。
它同时支持Debian 8.x Jessie和Debian 7.x Wheezy。
Debian 8.x Jessie的配置
以root用户身份将以下两行添加到/etc/apt/sources.list
中:
$ sudo -s # echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list # echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
保存并关闭文件。
这是我的更新文件:
$ cat /etc/apt/sources.list
Debian 7.x Wheezy的配置
以root用户身份将以下两行追加到/etc/apt/sources.list
中:
$ sudo -s # echo 'deb http://packages.dotdeb.org wheezy all' >> /etc/apt/sources.list # echo 'deb-src http://packages.dotdeb.org wheezy all' >> /etc/apt/sources.list
保存并关闭文件。
从15/Feb/2016
开始,以上有关Debian 7.x Wheezy的说明不再起作用。
请按照以下说明从源代码编译PHP 7:
$ sudo apt-get install git $ cd /tmp $ git clone https://github.com/kasparsd/php-7-debian.git $ cd php-7-debian/ $ ./build.sh
下载和编译所有内容都需要一些时间。
最后,您应该看到以下内容:
Generating phar.php Generating phar.phar clicommand.inc directorygraphiterator.inc phar.inc Build complete. Don't forget to run 'make test'. Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20150303/ Installing PHP CLI binary: /usr/local/php7/bin/ Installing build environment: /usr/local/php7/lib/php/build/ Installing header files: /usr/local/php7/include/php/ Installing helper programs: /usr/local/php7/bin/ program: phpize program: php-config Installing man pages: /usr/local/php7/php/man/man1/ page: phpize.1 page: php-config.1 /tmp/php-7-debian/php-src/build/shtool install -c ext/phar/phar.phar /usr/local/php7/bin ln -s -f phar.phar /usr/local/php7/bin/phar Installing PDO headers: /usr/local/php7/include/php/ext/pdo/
要在Debian 7.x上安装PHP 7:
$ sudo ./install.sh
输出示例:
update-rc.d: using dependency based boot sequencing
您可以验证PHP版本:
$ /usr/local/php7/bin/php --version PHP 7.1.1 (cli) (built: Feb 15 2016 18:49:03) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.1.1, Copyright (c) 1999-2016, by Zend Technologies
所有PHP配置文件都存储在/usr/local/php7下:
/usr/local/php7/lib/php.ini /usr/local/php7/etc/php-fpm.conf /usr/local/php7/etc/php-fpm.d/www.conf /usr/local/php7/etc/conf.d/modules.ini
将Debian初始化脚本添加到:
/etc/init.d/php7-fpm
有关在Debian 7.x上使用PHP 7的更多信息,请参见此页面。
以下其余说明仅适用于Debian版本8.x。
步骤3:获取并安装GnuPG密钥(仅Jessie)
输入以下命令
$ cd /tmp $ wget https://www.dotdeb.org/dotdeb.gpg $ sudo apt-key add dotdeb.gpg $ rm dotdeb.gpg
刷新apt数据库以包括新软件包:
$ sudo apt-get update
步骤4:安装PHP 7(仅限Jessie)
您在步骤1中创建了一个名为$x的shell变量。
要安装等效的php5软件包,请执行:
$ y="$(sed 's/php5/php7.0/g'
如何搜索PHP7软件包(仅Jessie)?
$ apt-cache search php7.0-\* $ apt-cache search php7.0-\* | grep -i mysql
如何单独安装PHP7软件包?
或者,您可以只安装所需的PHP7软件包。
在此示例中,安装php7,php-fpm,php7-mysql和php7-gd:
$ sudo apt-get install php7.0 php7.0-fpm php7.0-gd php7.0-mysql
步骤5:重新配置Web服务器和php 7(仅Jessie)
您的php7配置文件位于/etc/php/7.0/目录中,如下所示:
- /etc/php/7.0/apache2/PHP 7和Apache 2
- /etc/php/7.0/fpm/Nginx/Lighttpd/Apache2和其他服务器的PHP 7 fpm。
- /etc/php/7.0/mods-available/用于PHP模块(例如gd/mysql/memecached等)的所有php ini配置文件。
您需要根据设置编辑文件并配置Web服务器。
示例:将Lighttpd Web服务器配置为使用PHP 7
编辑/etc/lighttpd/conf-enabled/15-fastcgi-php.conf文件,执行:
$ sudo vi /etc/lighttpd/conf-enabled/15-fastcgi-php.conf
追加/编辑如下(注意更新的/run/php/php7.0-fpm.sock路径):
fastcgi.server += ( ".php" - (( "bin-path" - "/usr/bin/php-cgi", "socket" - "/run/php/php7.0-fpm.sock", "max-procs" - 1, "bin-environment" - ( "PHP_FCGI_CHILDREN" - "4", "PHP_FCGI_MAX_REQUESTS" - "10000" ), "bin-copy-environment" - ( "PATH", "SHELL", "USER" ), "broken-scriptfilename" - "enable" )) )
保存并关闭文件。
按照步骤6重新启动Web服务器。
示例:配置Nginx Web服务器使用PHP 7
编辑/etc/nginx/sites-enabled/default文件,执行:
$ sudo vi /etc/nginx/sites-enabled/default
首先在文件顶部添加以下内容:
# Upstream to abstract backend connection(s) for PHP 7. upstream myphpsevenbackend { server unix:/run/php/php7.0-fpm.sock; }
接下来,找到服务器块并按如下所示进行更新/编辑/追加:
# Pass all .php files onto a php-fpm/php-fcgi server. # index index.php; location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } # This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in php.ini (default) # include /etc/nginx/fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass myphpsevenbackend; }
保存并关闭文件。
按照步骤6重新启动Web服务器。
示例:将Apache 2 Web服务器配置为使用PHP 7(仅Jessie)
要在Apache2中启用PHP 7.0 FPM,请执行:
$ sudo a2enmod proxy_fcgi setenvif
按照步骤6重新启动Web服务器。
步骤6:重新启动Web服务器
如果使用的是lighttpd Web服务器,请执行:
$ sudo systemctl restart lighttpd.service
如果您使用的是Nginx Web服务器,请执行:
$ sudo systemctl restart nginx.service
如果您使用的是Apache 2 Web服务器,请执行:
$ sudo systemctl reload apache2.service
测试您的设置
在DocumentRoot中创建一个名为test.php的文件(例如/var/www/html/test.php):
<?php /* test.php */ phpinfo(); ?>
保存并关闭文件。
打开浏览器并输入url:
http://your-domain/test.php
或者
http://server.ip.address.here/test.php
如何停止/启动/重新启动php7.0-fpm(仅Jessie)?
语法如下
$ sudo systemctl stop php7.0-fpm.service $ sudo systemctl start php7.0-fpm.service $ sudo systemctl restart php7.0-fpm.service $ sudo systemctl reload php7.0-fpm.service
关于php7.0-fpm配置文件的说明(仅Jessie)
/etc/php/7.0/fpm/php.ini
PHP 7配置文件。/etc/php/7.0/fpm/php-fpm.conf
PHP 7 FPM配置文件。/etc/php/7.0/fpm/pool.d/www.conf
PHP 7 FPM的默认池。在这里,您可以定义用户/组,FastCGI请求路径,进程管理器和子代值,php错误文件,内存限制等。
每当您对以上任何一个文件进行更改时,请使用以下语法重新加载/重新启动php7.0-fpm.service:
$ sudo systemctl reload php7.0-fpm.service
这样就可以在Debian Linux 7.x或8.x服务器上成功启用并配置PHP 7。