函数计算 php runtime 编译非内置的扩展

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月免费额度15元,12个月
简介: 在本文中,以 `php-gd` 扩展为例, 我们讲解如果利用fcli 工具编译函数计算php runtime 中其他没有内置的扩展

php runtime 使用FAQ

问题

函数计算 php runtime 中的 php 版本为 7.2.7,php runtime 已经内置了较多的扩展,具体如下:

"Core", "date", "libxml", "openssl", "pcre", "zlib", "curl","filter", "hash", "readline", "Reflection", 
"SPL", "session","xml", "standard", "mysqlnd", "bcmath", "bz2", "calendar","ctype", "dom", "mbstring", 
"fileinfo", "ftp", "gettext", "gmp", "iconv","imagick", "json", "exif", "mysqli", "pcntl", "PDO", 
"pdo_mysql","Phar", "posix", "protobuf", "redis", "shmop", "SimpleXML", "soap","sockets", "sysvmsg", "zip", "memcached",
"sysvsem", "sysvshm", "tokenizer", "xmlreader","xmlrpc", "xmlwriter", "Zend OPcache", "xdebug",

但是还有用户具有其他扩展的需求,比如用户有对 php-gd 扩展的需求, 在本文中,以 php-gd 扩展为例, 我们讲解如果利用fcli 工具编译其他没有内置的扩展,php相关的扩展如下: php-ext

文章最后章节提供了编译好的扩展下载.

操作方法

简单,不需要额外底层库, 直接可以安装成功

~ tmp # fcli shell
Welcome to the function compute world. Have fun!
>>> sbox -t php7.2 -d code
Entering the container. Your code is in the /code direcotry.
Unable to find image 'aliyunfc/runtime-php7.2:build' locally
build: Pulling from aliyunfc/runtime-php7.2
...

root@c83d77cb373d:/code# docker-php-ext-install gd
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
....

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
Installing header files:          /usr/local/include/php/
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp.la       modules/* libs/*
root@c83d77cb373d:/code# ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
bcmath.so    dom.so      gd.so       iconv.so       mysqli.so   pdo_mysql.so  redis.so       soap.so     sysvshm.so    xmlrpc.so
bz2.so         exif.so      gettext.so  imagick.so   opcache.so  phar.so         session.so    sockets.so  tokenizer.so  xmlwriter.so
calendar.so  fileinfo.so  gmp.so      json.so       pcntl.so    posix.so      shmop.so       sysvmsg.so  xdebug.so
ctype.so     ftp.so      hash.so     mbstring.so  pdo.so      protobuf.so   simplexml.so  sysvsem.so  xmlreader.so
root@c83d77cb373d:/code# cp /usr/local/lib/php/extensions/no-debug-non-zts-20170718/gd.so ./

最后从sbox 命令中关联的code目录把 gd.so 提取出来, 然后参考:
php runtime 使用自定义扩展

复杂,需要额外底层库

root@fb4e2bc65410:/code# apt-get update
root@fb4e2bc65410:/code# apt-get install libsqlite3-dev
root@fb4e2bc65410:/code# docker-php-ext-install pdo_sqlite
root@fb4e2bc65410:/code# find / -name "pdo_sqlite.so"
/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_sqlite.so
root@fb4e2bc65410:/code# find / -name "*libsqlite3*"
/usr/lib/x86_64-linux-gnu/libsqlite3.so
/usr/lib/x86_64-linux-gnu/libsqlite3.la
/usr/lib/x86_64-linux-gnu/libsqlite3.a
/usr/lib/x86_64-linux-gnu/libsqlite3.so.0
/usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
...
root@fb4e2bc65410:/code# mkdir lib
root@fb4e2bc65410:/code# cp /usr/lib/x86_64-linux-gnu/libsqlite3* ./lib
root@fb4e2bc65410:/code# ls lib
libsqlite3.a  libsqlite3.la  libsqlite3.so  libsqlite3.so.0  libsqlite3.so.0.8.6
root@fb4e2bc65410:/code# mkdir extension
root@fb4e2bc65410:/code# cp /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_sqlite.so ./extension/
root@fb4e2bc65410:/code# touch index.php
root@fb4e2bc65410:/code# ls -ll
total 0
drwxr-xr-x 3 root root  96 May 15 10:46 extension
-rw-r--r-- 1 root root   0 May 15 10:46 index.php
drwxr-xr-x 7 root root 224 May 15 10:45 lib

扩展下载

php-gd download

pgsql-demo

pdo_sqlite

pdo_sqlsrv

swoole

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
20天前
|
运维 Serverless API
函数计算产品使用问题之如何使用PHP Runtime非内置扩展
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
2月前
|
缓存 运维 监控
Serverless 应用引擎产品使用合集之在使用函数计算 FC 部署 stable-diffusion 应用时,选了 tagger 扩展插件却拿不到提示词,还报错“Error”,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
2月前
|
运维 JavaScript Serverless
Serverless 应用引擎产品使用合集之php工程已经部署,可以正常访问数据库,静态资源样式无法正常加载,要怎么配置
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之php工程已经部署,可以正常访问数据库,静态资源样式无法正常加载,要怎么配置
|
2月前
|
运维 Serverless 数据处理
函数计算产品使用问题之 php环境中如何修改PHP允许的文件上传大小和POST最大大小
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
关系型数据库 应用服务中间件 Linux
centos7编辑安装php7.启用php扩展
centos7编辑安装php7.启用php扩展
590 0
centos7编辑安装php7.启用php扩展
|
消息中间件 网络协议 Shell
CentOS6.9安装RabbitMQ和源码编译安装php的RabbitMQ扩展
这篇笔记记录了在CentOS6.9中使用二进制包安装RabbitMQ的过程,并附上了启动脚本,简单介绍了命令,还记录了源码编译安装php的RabbitMQ扩展的过程
4750 0
|
PHP 计算机视觉 Shell
uiz
|
自然语言处理 PHP
安装PHP scws分词扩展时候遇到的坑
这个是我自己遇到的坑,百度了好多,最后算是解决了,问题都记一下    1.安装的目的:做分词,语义分析使用    2.mac 安装 scws 分词工具的时候会出现编译报错的问题,问题可能是由于mac机器上的openssl 版本过低,使用brew安装最新openssl还是没办法解决问题,是因为在编译.
uiz
2955 0

热门文章

最新文章

相关产品

  • 函数计算