我正在尝试构建一个 PHP8.1.8 lambda 层,但是我遵循https://aws.amazon.com/blogs/apn/aws-lambda-custom-runtime-for-php-a-practical-example/
并且只使用正确的版本,所以我做的第一件事是在控制台中启动 Node.JS Lambda 并输出 process.versions,以识别要使用的正确 OpenSSL 版本,openssl: '1.1.1n+quic'
因此我将他们提供的示例更改为
curl -sL https://www.openssl.org/source/openssl-1.1.1q.tar.gz | tar -xvz
cd openssl-1.1.1q
./config && make && sudo make install
cd ~
这似乎有效,除了当我运行时openssl version
我收到有关缺少 libssl.so.1.1 的错误所以我运行
sudo ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
sudo ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
如果我现在运行openssl version
我会得到正确的报告1.1.1q
然后我再次将博客中的脚本改为使用 PHP8.1.8 而不是 7,然后运行下面的代码,没有任何问题
mkdir ~/php-8-bin
curl -sL https://www.php.net/distributions/php-8.1.8.tar.gz | tar -xvz
cd php-8.1.8
./buildconf --force
然而我的问题是当我尝试运行时./configure --prefix=/home/ec2-user/php-8-bin/ --with-openssl=/usr/local/ssl --with-curl --with-zlib
出现错误No package 'openssl' found
并且我完全不知道如何解决它。
答案1
因此,经过几个小时的讨论,在 Libera IRC 中的 #linux 频道中讨论如何解决这个问题,即在构建 PHP 时覆盖 PKG_CONFIG_PATH 以包含 lib64 目录。
PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:${PKG_CONFIG_PATH} ./configure --prefix=/home/ec2-user/php-8-bin --with-curl --with-zlib