php扩展

1.安装PHP

生产环境PHP都是运行在Linux操作系统中,如:Centos操作系统,在Centos操作系统中安装PHP需要经过预编译、编译和安装等阶段。

安装步骤如下:

  • 1.从PHP官方网站下载某个版本的PHP源码包,如:7.2.31

    PHP官网地址:https://www.php.net/

  • 2.创建php-fpm运行用户组与用户

  # 创建www用户组
  groupadd www
  
  #创建www用户,且www用户不能登录
  useradd www -g www -s /sbin/nologin
  • 3.解压并进入安装目录
  tar xzvf 	php-7.2.31.tar.gz
  cd 	php-7.2.31
  • 4.预编译,执行以下命令
  ./configure  --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-gd --with-iconv --with-zlib --with-curl --with-pdo-mysql --with-png-dir --with-jpeg-dir --with-freetype-dir --with-fpm-user=www --with-fpm-group=www --with-gettext --with-openssl --enable-bcmath --enable-fpm --enable-mbstring --enable-sockets --enable-session --with-gettext
  • 5.编译,执行如下命令
  make
  • 6.安装,执行如下命令
  make install

此步骤安装完成后,PHP会被安装到/usr/local/php,目录结构如下

drwxr-xr-x  12 root  wheel  384  9 15  2019 bin/
drwxr-xr-x   7 root  wheel  224  7  4 11:12 etc/
drwxr-xr-x   3 root  wheel   96  9 15  2019 include/
drwxr-xr-x   3 root  wheel   96  9 15  2019 lib/
drwxr-xr-x   4 root  wheel  128  9 15  2019 php/
drwxr-xr-x   3 root  wheel   96  9 15  2019 sbin/
drwxr-xr-x   4 root  wheel  128  9 15  2019 var/

至此,cli模式下可以执行命令了,如

# 查看php版本
/usr/local/php/bin/php -v
# 查看php已安装启用模块
/usr/local/php/bin/php -m
#查看php详情
/usr/local/php/bin/php -i

为了方便执行php命令,我们可以把/usr/local/php/bin目录配置到系统环境变量中,这样就可以省略路径执行php命令。

  • 7.配置php-fpm

php的源码目录中有两个ini格式的配置文件,名称如下

-rw-rw-r--    1 root  wheel    71232  8 28  2019 php.ini-development
-rw-rw-r--    1 root  wheel    71504  8 28  2019 php.ini-production

两个配置文件分别是php提供的开发和生产环境的默认配置参数,我们根据自己需要拷贝即可,如

cp php.ini-production /usr/local/php/etc/

拷贝完成之后,我们进行一些常规配置修改

;关闭php版本输出
expose_php = Off
;设置错误级别
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
;设置php错误日志目录,目录必须存在,且www用户具有写权限
error_log = /data/logs/php_errors.log
[Date]
;根据自己需要设置时区
date.timezone = PRC
...

进行了一些自定义配置后,还需要配置php-fpm的配置

# 进入php的etc目录
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf

此配置文件也可以根据自己需要进行自定义配置,开发环境保持默认即可。

php-fpm.conf配置最后一行为include=/usr/local/php/etc/php-fpm.d/*.conf,此处加载了/usr/local/php/etc/php-fpm.d目录下所有conf扩展名的配置,这个目录下一般放php-fpm进程池配置。

配置www进程池

cd /usr/local/php/etc/php-fpm.d
mv www.conf.default www.conf

此配置也可以根据自己需要进行自定义配置,如

;监听地址和端口
listen = 127.0.0.1:9007
;fpm子进程管理方式
pm = dynamic
;每个子进程最大处理请求数,当处理请求数量超过配置值时,会创建新的子进程,旧的子进程退出。
pm.max_requests = 500
...

此处强调一下,fpm子进程管理方式有三种,此处面试的时候经常会被问到,本文简单的介绍一下。

pm 的可选值有static、dynamic、ondemand
static代表子进程的数量是固定的,由配置pm.max_children决定

dynamic代表数量是动态的,具体策略受这些配置影响。
pm.max_children:同一时间生存子进程的最大数量;
pm.start_servers:fpm启动的时候创建的子进程数量;
pm.min_spare_servers:处于空闲状态子进程的最小数量,当空闲的子进程数量小于配置值时,将有新的子进程被创建;
pm.max_spare_servers:处于空闲状态子进程的最大数量,当空闲子进程数量大于配置值时,将有子进程被杀掉。

ondemand代表按需创建,当fpm启动的时候不创建子进程,当有新的请求连接时,将会创建子进程。具体策略受这些配置影响。
pm.max_children:同一时间生存子进程的最大数量;
pm.process_idle_timeout:单位是s,子进程空闲时间超过配置值时,该子进程将被杀掉。
  • 8.将php-fpm加入开机启动

centos6操作系统

  # 将php源码目录中的php-7.2.31/sapi/fpm/init.d.php-fpm拷贝到/etc/init.d/
  cd ./php-7.2.31/sapi/fpm/
  cp init.d.php-fpm /etc/init.d/php-fpm
  #加入开机启动
  chkconfig php-fpm on
  
  #启动php-fpm
  service php-fpm start
  #关闭php-fpm
  service php-fpm stop
  #重启php-fpm
  service php-fpm restart
  #平滑重启php-fpm
  service php-fpm reload

centos7操作系统

# 将php源码目录中的php-7.2.31/sapi/fpm/php-fpm.service拷贝到/usr/lib/systemd/system
cd ./php-7.2.31/sapi/fpm/
cp php-fpm.service /usr/lib/systemd/system

#赋予执行权限
chmod +x /usr/lib/systemd/system/php-fpm.service
#加入开机启动
systemctl enable php-fpm

#启动php-fpm
systemctl start php-fpm
#关闭php-fpm
systemctl stop php-fpm
#重启php-fpm
systemctl restart php-fpm
#平滑重启php-fpm
systemctl reload php-fpm

到这里我们就成功安装了php-fpm

2.安装扩展

在PHP的源码目录中有个ext目录,里面包含了PHP官方提供的扩展,如下

drwxrwxr-x  5 root root  4096 May 22 14:11 bcmath
drwxrwxr-x  3 root root  4096 Aug 28  2019 bz2
drwxrwxr-x  3 root root  4096 Aug 28  2019 calendar
drwxrwxr-x  3 root root  4096 Aug 28  2019 com_dotnet
drwxrwxr-x  4 root root  4096 May 22 14:11 ctype
drwxrwxr-x  4 root root  4096 May 22 14:11 curl
drwxrwxr-x  5 root root  4096 May 22 14:09 date
drwxrwxr-x  6 root root  4096 Aug 28  2019 dba
drwxrwxr-x  5 root root  4096 May 22 14:11 dom
drwxrwxr-x  4 root root  4096 Aug 28  2019 enchant
drwxrwxr-x  3 root root  4096 Aug 28  2019 exif
-rwxrwxr-x  1 root root  9415 Aug 28  2019 ext_skel
-rw-rw-r--  1 root root  1165 Aug 28  2019 ext_skel_win32.php
drwxrwxr-x  5 root root  4096 May 22 14:11 fileinfo
drwxrwxr-x  5 root root  4096 May 22 14:12 filter
drwxrwxr-x  3 root root  4096 Aug 28  2019 ftp
drwxrwxr-x  5 root root  4096 May 22 14:12 gd
drwxrwxr-x  4 root root  4096 May 22 14:12 gettext
drwxrwxr-x  3 root root  4096 Aug 28  2019 gmp
drwxrwxr-x  5 root root  4096 May 22 14:12 hash
drwxrwxr-x  4 root root  4096 May 22 14:12 iconv
drwxrwxr-x  3 root root  4096 Aug 28  2019 imap
drwxrwxr-x  3 root root  4096 Aug 28  2019 interbase
drwxrwxr-x 21 root root  4096 Aug 28  2019 intl
drwxrwxr-x  4 root root  4096 May 22 14:12 json
drwxrwxr-x  3 root root  4096 Aug 28  2019 ldap
drwxrwxr-x  4 root root  4096 May 22 14:10 libxml
drwxrwxr-x  7 root root  4096 May 22 14:12 mbstring
drwxrwxr-x  3 root root  4096 Aug 28  2019 mysqli
drwxrwxr-x  3 root root  4096 May 22 14:14 mysqlnd
drwxrwxr-x  3 root root  4096 Aug 28  2019 oci8
drwxrwxr-x  3 root root  4096 Aug 28  2019 odbc
drwxrwxr-x  5 root root  4096 May 22 14:09 opcache
drwxrwxr-x  4 root root  4096 May 22 14:10 openssl
drwxrwxr-x  3 root root  4096 Aug 28  2019 pcntl
drwxrwxr-x  5 root root  4096 May 22 14:10 pcre
drwxrwxr-x  4 root root  4096 May 22 14:13 pdo
drwxrwxr-x  3 root root  4096 Aug 28  2019 pdo_dblib
drwxrwxr-x  3 root root  4096 Aug 28  2019 pdo_firebird
drwxrwxr-x  4 root root  4096 May 22 14:13 pdo_mysql
drwxrwxr-x  3 root root  4096 Aug 28  2019 pdo_oci
drwxrwxr-x  3 root root  4096 Aug 28  2019 pdo_odbc
drwxrwxr-x  3 root root  4096 Aug 28  2019 pdo_pgsql
drwxrwxr-x  4 root root  4096 May 22 14:13 pdo_sqlite
drwxrwxr-x  3 root root  4096 Aug 28  2019 pgsql
drwxrwxr-x  5 root root  4096 May 22 14:16 phar
drwxrwxr-x  4 root root  4096 May 22 14:13 posix
drwxrwxr-x  3 root root  4096 Aug 28  2019 pspell
drwxrwxr-x  3 root root  4096 Aug 28  2019 readline
drwxrwxr-x  3 root root  4096 Aug 28  2019 recode
drwxrwxr-x  4 root root  4096 May 22 14:13 reflection
drwxrwxr-x  4 root root  4096 May 22 14:13 session
drwxrwxr-x  3 root root  4096 Aug 28  2019 shmop
drwxrwxr-x  5 root root  4096 May 22 14:13 simplexml
drwxrwxr-x  3 root root  4096 Aug 28  2019 skeleton
drwxrwxr-x  3 root root  4096 Aug 28  2019 snmp
drwxrwxr-x  4 root root  4096 Aug 28  2019 soap
drwxrwxr-x  4 root root  4096 May 22 14:13 sockets
drwxrwxr-x  3 root root  4096 Aug 28  2019 sodium
drwxrwxr-x  6 root root  4096 May 22 14:13 spl
drwxrwxr-x  5 root root  4096 May 22 14:10 sqlite3
drwxrwxr-x  5 root root 12288 May 22 14:14 standard
drwxrwxr-x  3 root root  4096 Aug 28  2019 sysvmsg
drwxrwxr-x  3 root root  4096 Aug 28  2019 sysvsem
drwxrwxr-x  3 root root  4096 Aug 28  2019 sysvshm
drwxrwxr-x  4 root root  4096 Aug 28  2019 tidy
drwxrwxr-x  4 root root  4096 May 22 14:14 tokenizer
drwxrwxr-x  3 root root  4096 Aug 28  2019 wddx
drwxrwxr-x  4 root root  4096 May 22 14:14 xml
drwxrwxr-x  5 root root  4096 May 22 14:14 xmlreader
drwxrwxr-x  4 root root  4096 Aug 28  2019 xmlrpc
drwxrwxr-x  5 root root  4096 May 22 14:14 xmlwriter
drwxrwxr-x  3 root root  4096 Aug 28  2019 xsl
drwxrwxr-x  2 root root  4096 Aug 28  2019 zend_test
drwxrwxr-x  5 root root  4096 Aug 28  2019 zip
drwxrwxr-x  4 root root  4096 May 22 14:11 zlib

我们可以看到PHP官方我们提供了丰富的扩展,我们可以去PHP官网学习一下这些扩展的功能,另外除了以上这些扩展,也可以安装第三方开发者开发的扩展,如:yafyar等。

PHP扩展的安装有多种方式,作者习惯采用phpize的方式安装,此文件位于PHP安装目录/usr/local/php/bin

phpize安装扩展是由规律可循的,主要分为以下几步

  • 1.进入待安装扩展目录,执行/usr/local/php/bin/phpize生成configure文件,如
  cd php-7.2.31/ext/ftp
  /usr/local/php/bin/phpize
  • 2.预编译,预编译过程需要制定php-config路径,路径位置为/usr/local/php/bin/php-config,如
  ./configure --with-php-config=/usr/local/php/bin/php-config
  • 3.编译安装,如
  make && make install

安装完成后如下提示

...
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/

以上提示了扩展被安装的目录

  • 4.将刚刚安装的扩展配置到php.ini文件中,如
  [ftp]
  extension=ftp.so

此时执行php -m,如果能看到表示ftp扩展在cli模式下已经安装成功。

注意:fpm模式下ftp扩展并未生效,需要reload才能生效。

通过phpize安装扩展的步骤就是以上4步,其他扩展都是大同小异,好了,你学会了吗?如果没有学会或者有什么疑问可以加到QQ群【621674014】,我们一起讨论学习。

学习更多内容: https://404.360tryst.com

我的视频课程: https://edu.csdn.net/course/detail/9933

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍穹0113

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值