注:结尾附pdo_sqlite.so文件和一键脚本
1. 启动 Sandbox,并进入容器的 shell 环境
如下图所示,点击"Start Sandbox",启动fc运行环境的sandbox
此时会创建一个fc php运行环境的docker容器
在终端输入:docker exec -it tender_merkle /bin/bash,进入容器shell环境
2. 下载 php 源码
下载地址:https://www.php.net/downloads
在该页面选择对应的版本,复制其链接地址,这里fc环境用是php7.2版本
然后解压得到源码目录 php-7.2.32/
3. 编译 pdo_sqlite
进入目录 php-7.2.32/ext/pdo_sqlite
运行:phpize
运行:./configure
此时报错 Please reinstall the sqlite3 distribution
运行:
apt-get update
apt-get install libsqlite3-dev
然后再运行 ./configure 就正常了
接下来再运行:make
会在php-7.2.32/ext/pdo_sqlite/modules/ 目录下生成pdo_sqlite.so 和 pdo_sqlite.la 文件
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下:
4. 验证 fc 运行环境已经加载 pdo_sqlite
在demo/index目录下添加phpinfo.php文件:
修改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;
}
点击运行:
浏览器访问 http://localhost:8000/2016-08-15/proxy/demo/index:
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