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

irina-marie-3LhP8tDH4rQ-unsplash.jpg

本文是对官方文档一个补充,补充了一个小小的细节和另外一个扩展的方法

本文以不引入protobuf和添加pdo_sqlite内置扩展为例,介绍如何添加、删除PHP运行环境的内置扩展。关于函数计算PHP运行环境目前支持的内置扩展,请参见PHP内置扩展

准备

方法1

使用精简或添加大量扩展

  1. 在函数入口文件的相同目录创建一个extension目录,然后上传下载的扩展到指定目录,最终目录结构如下。

    1
    2
    3
    4
    5
    .
    |____extension
    | |____my_ext.ini
    | |____pdo_sqlite.so
    |____index.php

fuckqq_2024-07-05_10-16-37.jpg

  1. 编辑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
    43
    extension=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
  2. 基于上述目录的代码包创建函数。具体操作,请参见创建函数

  3. 设置函数的环境变量。PHP_INI_SCAN_DIR指向代码目录下面的my_ext.ini,此时PHP运行环境不会加载protobuf扩展。

1
PHP_INI_SCAN_DIR=/code/extension

更多信息,请参见PHP运行环境动态加载卸载内置扩展

方法2

适用于单个扩展添加。

通方法1差不多,不过只需要添加一个pdo_sqlite.ini,最终目录结构如下;

1
2
3
4
5
.
|____extension
| |____pdo_sqlite.ini
| |____pdo_sqlite.so
|____index.php

fuckqq_2024-07-05_10-18-38.jpg

其中pdo_sqlite.ini内容为如下

1
extension=/code/extension/pdo_sqlite.so

然后不需要修改环境变量。

其他版本

要是需要添加指定版本的某个扩展可以参考函数计算 php 运行环境添加 pdo_sqlite 扩展

参考