我有一个使用 DDEV 运行 PHP 8.1 实例的项目。我需要向包中引入 pdo_sqlsrv 扩展,因此我在 .ddev/web-build/ 目录中添加了一个 Dockerfile,用于安装所需的包,并复制一个 bash 脚本,然后使用 sudo 运行该脚本来安装剩余的依赖项。
bash 脚本获取 microsoft gpg 密钥,从packages.microsoft.com/config/$OS/$VERSION/prod.list 中提取 apt 源列表(其中 OS 和 Version 是相当于 debian 和 11 的变量),然后继续执行安装 msodbcsql17、unixodbc 和 unixodbc-dev
最后,bash 脚本运行 pecl install pdo_sqlsrv 命令。
一切都按预期工作,除了 pdo_sqlsrv 的构建由于缺少文件 /usr/lib/x86_64-linux-gnu/libltdl.la 而失败 我已经搜索了我能找到的所有内容,并且无法理解为什么这个 libltdl.la 文件是丢失的。我验证了 libltdl-dev (2.4.6-15) 软件包已安装。它有其他预期的文件,如 libltdl.a 和 libltdl.so 等 - 只是不是 .la 文件。
为了防止项目开发陷入停滞,我拼命尝试将 libltdl.la 文件从本地 WSL2 Ubuntu 20.04 系统复制到我的 .ddev/web-build/ 目录中,并将以下命令添加到我的 Dockerfile 中:
COPY libltdl.la /usr/lib/x86_64-linux-gnu/
这“解决”了问题,允许 pecl 安装完成,并且生成的 pdo_sqlsrv 扩展被正确编译并按预期加载。然而,为什么这个 .la 文件丢失,以及如何“正确”确保它安装,仍然是一个我希望我能理解答案的问题。 …