如何在Debian Linux 8.7/7.x上安装PHP 7

时间:2020-01-09 10:41:03  来源:igfitidea点击:

如何在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.iniPHP 7配置文件。
  • /etc/php/7.0/fpm/php-fpm.confPHP 7 FPM配置文件。
  • /etc/php/7.0/fpm/pool.d/www.confPHP 7 FPM的默认池。在这里,您可以定义用户/组,FastCGI请求路径,进程管理器和子代值,php错误文件,内存限制等。

每当您对以上任何一个文件进行更改时,请使用以下语法重新加载/重新启动php7.0-fpm.service:

$ sudo systemctl reload php7.0-fpm.service

这样就可以在Debian Linux 7.x或8.x服务器上成功启用并配置PHP 7。