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

简介: 编译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
相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
274 4
|
Serverless API 异构计算
函数计算产品使用问题之修改SD模版应用的运行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
385 1
|
NoSQL 安全 Linux
MongoDB PHP 扩展
10月更文挑战第19天
239 0
MongoDB PHP 扩展
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
367 3
|
安全 前端开发 PHP
PHP与现代Web开发:构建高效和可扩展的应用程序
【8月更文挑战第29天】在这篇文章中,我们将深入探讨PHP如何适应现代Web开发的需求。我们将通过实际案例分析,揭示PHP的核心优势,并展示如何利用这些优势来构建高性能、可扩展的Web应用。文章不仅提供理论知识,还包括具体的代码示例,旨在帮助开发者更好地理解和运用PHP解决实际问题。
|
运维 监控 Java
函数计算产品使用问题之怎么在运行环境中更改时区
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
SQL 关系型数据库 MySQL
PHP与数据库交互的艺术:深入探讨PDO扩展
【8月更文挑战第28天】在数字信息时代的海洋里,PHP作为一艘灵活的帆船,承载着无数网站和应用的梦想。而PDO扩展,则是这艘帆船上不可或缺的导航仪,指引着数据安全与效率的航向。本文将带你领略PHP与数据库交互的艺术,深入浅出地探索PDO的世界,从连接数据库到执行复杂的查询,每一步都清晰可见。我们将一起航行在这段奇妙的旅程上,解锁数据的奥秘,体验编程的乐趣。
272 1
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
运维 安全 Serverless
Serverless痛点解决问题之Serverless帮助解决 PHP 开发的运维问题如何解决
Serverless痛点解决问题之Serverless帮助解决 PHP 开发的运维问题如何解决
198 0