函数计算 php 运行环境添加 pdo_sqlite 扩展

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 编译pdo_sqlite并添加到函数计算php运行环境

注:结尾附pdo_sqlite.so文件和一键脚本

1. 启动 Sandbox,并进入容器的 shell 环境

如下图所示,点击"Start Sandbox",启动fc运行环境的sandbox
48c4e0c6263845b8b126f9612b4b17f0.png

此时会创建一个fc php运行环境的docker容器
image.png

在终端输入:docker exec -it tender_merkle /bin/bash,进入容器shell环境
d1ce9bfc3a19453383f6fd9a352ebb72.png

2. 下载 php 源码

下载地址:https://www.php.net/downloads
在该页面选择对应的版本,复制其链接地址,这里fc环境用是php7.2版本
a22fc5b45ad54914a677b336a1111dbd.png

9c76165601e34a389a20c7395ec09993.png
然后解压得到源码目录 php-7.2.32/

3. 编译 pdo_sqlite

进入目录 php-7.2.32/ext/pdo_sqlite
运行:phpize
b8db93d6adff4dfe994f0718d98f241a.png

运行:./configure
b1b276c87f964f66ad60dc83a3e44a26.png
此时报错 Please reinstall the sqlite3 distribution

运行:
apt-get update
apt-get install libsqlite3-dev
然后再运行 ./configure 就正常了
19f2554662084f9faec4a3e7fec7130c.png

接下来再运行:make
会在php-7.2.32/ext/pdo_sqlite/modules/ 目录下生成pdo_sqlite.so 和 pdo_sqlite.la 文件
978aae7fbad04b239fd668229b3d13a0.png

4. 添加到fc目录下

参考文档:https://help.aliyun.com/document_detail/89032.html?spm=a2c4g.11174283.6.574.20685212pqjLdP#using-customextension
创建extension目录,pdo_sqlite.ini文件,并把刚编译的pdo_sqlite.so放到extension下:
e57610cd737a441db86f13c14b6a5b18.png

4. 验证 fc 运行环境已经加载 pdo_sqlite

在demo/index目录下添加phpinfo.php文件:
53db42b1ada643c595bd9f3e271c3692.png

修改demo/index入口函数handler:

function handler($request, $context): Response {
    $proxy = $GLOBALS['fcPhpCgiProxy'];
    $resp = $proxy->requestPhpCgi($request, "/code", "phpinfo.php",
        ['SCRIPT_FILENAME' => "/code/phpinfo.php"],
        ['debug_show_cgi_params' => true, 'readWriteTimeout' => 300 * 1000]
    );
    return $resp;
}

image.png

点击运行:
image.png

浏览器访问 http://localhost:8000/2016-08-15/proxy/demo/index
image.png

5. 附:

pdo_sqlite.so文件:https://skyun-public.oss-cn-hangzhou.aliyuncs.com/pdo_sqlite.so

#!/bin/bash
#一键脚本

version="7.2.32"
docker_container=${container_name} # or ${container_id}
fc_func_dir=${fc_dir}/${service}/${function}

cd ${fc_func_dir}

docker exec -it ${docker_container} /bin/bash -c "
cd /root
apt-get update
apt-get install libsqlite3-dev
wget https://www.php.net/distributions/php-${version}.tar.gz
tar zxvf php-${version}.tar.gz
cd php-${version}/ext/pdo_sqlite
phpize
./configure
make
"

mkdir extension
cd extension
pwd
cmd="docker cp ${docker_container}:/root/php-${version}/ext/pdo_sqlite/modules/pdo_sqlite.so ./"
echo ${cmd}
`${cmd}`
echo "extension=/code/extension/pdo_sqlite.so" > pdo_sqlite.ini
相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
6月前
|
Serverless API 异构计算
函数计算产品使用问题之修改SD模版应用的运行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
8月前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
107 1
|
3月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
116 1
|
4月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
87 3
|
4月前
|
应用服务中间件 PHP Apache
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
|
6月前
|
运维 监控 Java
函数计算产品使用问题之怎么在运行环境中更改时区
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7月前
|
SQL 存储 PHP
PHP中使用SQLite数据库
SQLite是一种轻量级数据库引擎,数据以文件存储,支持SQL操作。PHP可连接SQLite执行CRUD操作。
130 4
|
6月前
|
运维 安全 Serverless
Serverless痛点解决问题之Serverless帮助解决 PHP 开发的运维问题如何解决
Serverless痛点解决问题之Serverless帮助解决 PHP 开发的运维问题如何解决
63 0
|
8月前
|
缓存 运维 监控
Serverless 应用引擎产品使用合集之在使用函数计算 FC 部署 stable-diffusion 应用时,选了 tagger 扩展插件却拿不到提示词,还报错“Error”,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
7月前
|
运维 Serverless API
函数计算产品使用问题之如何使用PHP Runtime非内置扩展
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。