Linux php7.1 apt安装


Linux php7.1 apt安装


正文

debain系linuxOS包管理采用apt方式。

安装php7.1、php-fpm

添加可获取php的apt源:

sudo vim /etc/apt/sources.list

把这一行也加上,然后保存退出:

deb https://packages.sury.org/php/ stretch main

手动添加gpg秘钥(不加,apt update时可能报错):

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

更新源:

sudo apt update

安装php7.1:

sudo apt install php7.1 php7.1-common php7.1-cgi php7.1-fpm php7.1-cli php7.1-bcmath php7.1-bz2 php7.1-curl php7.1-dba php7.1-dev php7.1-enchant php7.1-gd php7.1-gmp php7.1-imap php7.1-interbase php7.1-intl php7.1-json php7.1-ldap php7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-odbc php7.1-opcache php7.1-pgsql php7.1-phpdbg php7.1-pspell php7.1-readline php7.1-recode php7.1-snmp php7.1-soap php7.1-sqlite3 php7.1-sybase php7.1-tidy php7.1-xml php7.1-xmlrpc php7.1-xsl php7.1-zip

php7.1-common是通用拓展,php7.1-cgi提供cgi服务,php7.1-fpm提供web服务,php7.1-cli提供shell入口,其他的是一些别的拓展功能。

等待完成就算是安装好了,我们可以看一下版本:

php -v

修改php-fpm配置

不过现在php-fpm用的是socket方式,我们要改成9000端口方式:

看一下php-fpm.conf的配置:

cat /etc/php/7.1/fpm/php-fpm.conf

发现这里没有listen监听的配置,不过看到了最后一行: include=/etc/php/7.1/fpm/pool.d/*.conf

我们到/etc/php/7.1/fpm/pool.d/发现有www.conf,我们看一下这个文件:

cat /etc/php/7.1/fpm/pool.d/www.conf

在这个文件中看到了listen监听的配置:

listen = /run/php/php7.1-fpm.sock

看到这里监听的是socket方式,我们把这一行屏蔽掉,加入新的一行:

;listen = /run/php/php7.1-fpm.sock
listen = 127.0.0.1:9000

好,配置也修改完毕,接下来重启php-fpm:

sudo service php7.1-fpm restart

然后访问站点就可以了。

如果这里用socket方式,则Nginx中项目的配置是:

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    try_files $uri =404;
}

查看相关

看一下php-fpm服务状态:

service php7.1-fpm status

看一下php-fpm进程: ps -ef |grep php-fpm

看一下php-fpm进程关系: systemctl status |grep php-fpm

看一下端口9000在不在监听中:

netstat -apnt

安装php7.2

附带看一下php7.2的安装:

sudo apt install php7.2 php7.2-common php7.2-cgi php7.2-fpm php7.2-cli php7.2-bcmath php7.2-bz2 php7.2-curl php7.2-dba php7.2-dev php7.2-enchant php7.2-gd php7.2-gmp php7.2-imap php7.2-interbase php7.2-intl php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-odbc php7.2-opcache php7.2-pgsql php7.2-phpdbg php7.2-pspell php7.2-readline php7.2-recode php7.2-snmp php7.2-soap php7.2-sqlite3 php7.2-sybase php7.2-tidy php7.2-xml php7.2-xmlrpc php7.2-xsl php7.2-zip

php7.2新增了一个类:Object,不能支持yii2了,因为 yii2有一个自定义类:yii\base\Object,会冲突。

安装redis拓展

有时项目中需要连接redis,就要用到php的redis拓展,我们以管理员身份安装一下:

sudo apt install php7.1-redis

发现自动选择了php-redis拓展,还有依赖的几个包也自动安装了。

我们用查看下php拓展可以看到已经有了:

php -m

不过现在web访问查看phpinfo()还没有,我们需要重启一下php-fpm:

sudo service php7.1-fpm restart

然后就可以看到有了:

<?php
phpinfo();
exit;

安装mbstring拓展

sudo apt-get install php7.1-mbstring

查看php配置文件:

sudo find / -name php.ini

输出:

/etc/php/7.1/fpm/php.ini
/etc/php/7.1/cgi/php.ini
/etc/php/7.1/cli/php.ini

我们修改php.ini:

sudo vim /etc/php/7.1/fpm/php.ini

把下面这行加到文档中:

extension=mbstring.so

安装json拓展

sudo apt-get install php7.1-json

我们修改php.ini:

sudo vim /etc/php/7.1/cli/php.ini

把下面这行加到文档中:

extension=json.so

安装amqp拓展

sudo apt-get install php7.1-amqp

我们修改php.ini:

sudo vim /etc/php/7.1/cli/php.ini

把下面这行加到文档中:

extension=amqp.so

保存后,查看下php的拓展模块有哪些:

php -m

可以看到输出中已经有了:

[PHP Modules]
amqp
Core
date
filter
hash
json
libxml
mbstring
openssl
pcntl
pcre
Reflection
session
SPL
standard
zlib

[Zend Modules]

这种拓展安装方式比编译安装方便了不少,解决了依赖安装的问题。

安装ctype拓展

ctype扩展所提供的函数用来检测 在当前的区域设定下,一个字符或者字符串 是否仅包含指定类型的字符。提供的函数有:

ctype_alnum — 做字母和数字字符检测
ctype_alpha — 做纯字符检测
ctype_cntrl — 做控制字符检测
ctype_digit — 做纯数字检测
ctype_graph — 做可打印字符串检测,空格除外
ctype_lower — 做小写字符检测
ctype_print — 做可打印字符检测
ctype_punct — 检测可打印的字符是不是不包含空白、数字和字母
ctype_space — 做空白字符检测
ctype_upper — 做大写字母检测
ctype_xdigit — 检测字符串是否只包含十六进制字符

sudo apt-get install php7.1-ctype

通过Nginx访问的都是通过php-fpm进行的,所以如果web访问报缺拓展的错误,我们install拓展后,需要修改fpm下的php.ini:

sudo vim /etc/php/7.1/fpm/php.ini

把下面这行加到文档中:

extension = ctype.so

安装pdo_mysql拓展

PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 我们还要安装具体的访问数据库的驱动程序,如访问mysql库的pdo_mysql拓展:

sudo apt-get install php7.1-mysql

pdo_mysql的前置关键基础要素是mysqlnd,我们也要加上:

extension = mysqlnd.so
extension = pdo_mysql.so

安装zip拓展

有些包会用到 ext-zip 拓展,不然会报错,如:

- phpoffice/phpspreadsheet 1.5.2 requires ext-zip * -> the requested PHP extension zip is missing from your system.
- Installation request for phpoffice/phpspreadsheet 1.5.2 -> satisfiable by phpoffice/phpspreadsheet[1.5.2].

安装:

sudo apt install php7.1-zip

提示信息:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会同时安装下列软件:
  libapache2-mod-php7.1 libzip4 php7.1-bcmath php7.1-cli php7.1-common php7.1-curl php7.1-fpm php7.1-gd php7.1-json
  php7.1-mbstring php7.1-mysql php7.1-opcache php7.1-readline php7.1-xml
建议安装:
  php-pear
推荐安装:
  apache2
下列【新】软件包将被安装:
  libzip4 php7.1-zip
下列软件包将被升级:
  libapache2-mod-php7.1 php7.1-bcmath php7.1-cli php7.1-common php7.1-curl php7.1-fpm php7.1-gd php7.1-json php7.1-mbstring
  php7.1-mysql php7.1-opcache php7.1-readline php7.1-xml
升级了 13 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 13 个软件包未被升级。
需要下载 5,483 kB 的归档。
解压缩后会消耗 222 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 https://packages.sury.org/php stretch/main amd64 php7.1-gd amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [27.3 kB]
获取:2 https://packages.sury.org/php stretch/main amd64 php7.1-opcache amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [144 kB]
获取:3 https://packages.sury.org/php stretch/main amd64 php7.1-json amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [17.4 kB]   
获取:4 https://packages.sury.org/php stretch/main amd64 php7.1-curl amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [28.3 kB]   
获取:5 https://packages.sury.org/php stretch/main amd64 php7.1-xml amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [113 kB]     
获取:6 https://packages.sury.org/php stretch/main amd64 php7.1-bcmath amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [15.7 kB] 
获取:7 https://packages.sury.org/php stretch/main amd64 php7.1-fpm amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [1,334 kB]   
获取:8 https://packages.sury.org/php stretch/main amd64 php7.1-mbstring amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [465 kB]
获取:9 https://packages.sury.org/php stretch/main amd64 php7.1-mysql amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [120 kB]   
获取:10 https://packages.sury.org/php stretch/main amd64 php7.1-readline amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [12.3 kB]
获取:11 https://packages.sury.org/php stretch/main amd64 libapache2-mod-php7.1 amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [1,269 kB]
获取:12 https://packages.sury.org/php stretch/main amd64 php7.1-cli amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [1,327 kB]  
获取:13 https://packages.sury.org/php stretch/main amd64 php7.1-common amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [539 kB] 
获取:14 https://packages.sury.org/php stretch/main amd64 libzip4 amd64 1.5.1-4+0~20190318173229.9+stretch~1.gbp333132 [51.1 kB]   
获取:15 https://packages.sury.org/php stretch/main amd64 php7.1-zip amd64 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf [20.0 kB]   
已下载 5,483 kB,耗时 31秒 (175 kB/s)                                                                                             
(正在读取数据库 ... 系统当前共安装有 193590 个文件和目录。)
正准备解包 .../00-php7.1-gd_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-gd (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../01-php7.1-opcache_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-opcache (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../02-php7.1-json_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-json (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../03-php7.1-curl_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-curl (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../04-php7.1-xml_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-xml (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../05-php7.1-bcmath_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-bcmath (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../06-php7.1-fpm_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-fpm (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../07-php7.1-mbstring_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-mbstring (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../08-php7.1-mysql_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-mysql (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../09-php7.1-readline_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-readline (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../10-libapache2-mod-php7.1_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 libapache2-mod-php7.1 (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../11-php7.1-cli_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-cli (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正准备解包 .../12-php7.1-common_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在将 php7.1-common (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 解包到 (7.1.33-24+0~20201103.44+debian9~1.gbp50e805) 上 ...
正在选中未选择的软件包 libzip4:amd64。
正准备解包 .../13-libzip4_1.5.1-4+0~20190318173229.9+stretch~1.gbp333132_amd64.deb  ...
正在解包 libzip4:amd64 (1.5.1-4+0~20190318173229.9+stretch~1.gbp333132) ...
正在选中未选择的软件包 php7.1-zip。
正准备解包 .../14-php7.1-zip_7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf_amd64.deb  ...
正在解包 php7.1-zip (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-common (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-gd (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-readline (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-mysql (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-mbstring (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-bcmath (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-xml (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 libzip4:amd64 (1.5.1-4+0~20190318173229.9+stretch~1.gbp333132) ...
正在设置 php7.1-curl (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在处理用于 libc-bin (2.24-11+deb9u3) 的触发器 ...
正在处理用于 systemd (232-25+deb9u6) 的触发器 ...
正在设置 php7.1-zip (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...

Creating config file /etc/php/7.1/mods-available/zip.ini with new version
正在处理用于 man-db (2.7.6.1-2) 的触发器 ...
正在设置 php7.1-json (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-opcache (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 php7.1-cli (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在设置 libapache2-mod-php7.1 (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
Warning: Could not load Apache 2.4 maintainer script helper.
正在设置 php7.1-fpm (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) ...
正在处理用于 php7.1-cli (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 的触发器 ...
正在处理用于 libapache2-mod-php7.1 (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 的触发器 ...
Warning: Could not load Apache 2.4 maintainer script helper.
正在处理用于 php7.1-fpm (7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf) 的触发器 ...

然后就可以使用了。

我们查看下具体拓展有哪些:

php -m

输出:

[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
igbinary
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache






参考资料

deepin安装PHP7 https://bbs.deepin.org/forum.php?mod=viewthread&tid=156235&extra=

深度 Linux 搭建 PHP 开发环境 https://www.jianshu.com/p/d44e912bf1b7

如何查找php-fpm监听的端口 https://www.cnblogs.com/cjjjj/p/10548367.html

PHP 7 ChangeLog 更新日志 https://www.php.net/ChangeLog-7.php

PHP 手册 函数参考 变量与类型相关扩展 字符类型检测 https://www.php.net/manual/zh/book.ctype.php

PHP 手册 函数参考 数据库扩展 数据库抽象层 PHP 数据对象 https://www.php.net/manual/zh/book.pdo.php


返回