阿里云FC函数PHP运行环境如何增加或删除内置扩展

本文是对官方文档一个补充,补充了一个小小的细节和另外一个扩展的方法
本文以不引入protobuf和添加pdo_sqlite内置扩展为例,介绍如何添加、删除PHP运行环境的内置扩展。关于函数计算PHP运行环境目前支持的内置扩展,请参见PHP内置扩展。
准备
- php-pdo_sqlite扩展(阿里云官方提供)
- https://aliware-images.oss-cn-hangzhou.aliyuncs.com/FC/pdo_sqlite.zip
方法1
使用精简或添加大量扩展
在函数入口文件的相同目录创建一个extension目录,然后上传下载的扩展到指定目录,最终目录结构如下。
1
2
3
4
5.
|____extension
| |____my_ext.ini
| |____pdo_sqlite.so
|____index.php

编辑my_ext.ini文件,注释protobuf扩展。
您可以增加其他扩展或注释不需要的扩展,优化PHP运行环境的启动速度。示例代码如下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43extension=session.so
extension=ftp.so
extension=shmop.so
extension=bcmath.so
extension=gettext.so
extension=pcntl.so
extension=simplexml.so
extension=xmlreader.so
extension=bz2.so
extension=gmp.so
extension=pdo.so
extension=soap.so
extension=xmlrpc.so
extension=calendar.so
extension=iconv.so
extension=pdo_mysql.so
extension=sockets.so
extension=xmlwriter.so
extension=ctype.so
extension=imagick.so
extension=phar.so
extension=sysvmsg.so
extension=dom.so
extension=json.so
extension=posix.so
extension=sysvsem.so
extension=exif.so
extension=zip.so
extension=memcached.so
extension=mbstring.so
;注释删除内置protobuf扩展
;extension=protobuf.so
extension=sysvshm.so
extension=fileinfo.so
extension=mysqli.so
extension=redis.so
extension=tokenizer.so
extension=zip.so
extension=memcached.so
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/opcache.so
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
;添加pdo_sqlite扩展
extension=/code/extension/pdo_sqlite.so基于上述目录的代码包创建函数。具体操作,请参见创建函数。
设置函数的环境变量。PHP_INI_SCAN_DIR指向代码目录下面的my_ext.ini,此时PHP运行环境不会加载protobuf扩展。

1 | PHP_INI_SCAN_DIR=/code/extension |
更多信息,请参见PHP运行环境动态加载卸载内置扩展。
方法2
适用于单个扩展添加。
通方法1差不多,不过只需要添加一个pdo_sqlite.ini,最终目录结构如下;
1 | . |

其中pdo_sqlite.ini内容为如下
1 | extension=/code/extension/pdo_sqlite.so |
然后不需要修改环境变量。
其他版本
要是需要添加指定版本的某个扩展可以参考函数计算 php 运行环境添加 pdo_sqlite 扩展