正文
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