我们遇到这样一种情况,我们使用 circusd 来管理进程,并且当从 circus 调用而不是从命令行调用时,PHP 会加载不同的库(特别是 curl)。
从命令行:
{“version_number”:473344,“age”:4,“features”:2736797,“ssl_version_number”:0,“version”:“7.57.0”,“host”:“x86_64-pc-linux-gnu”,“ssl_version”:“OpenSSL / 1.1.0g”,“libz_version”:“1.2.8”,“protocols”:[“dict”,“file”,“ftp”,“ftps”,“gopher”,“http”,“https”,“imap”,“imaps”,“ldap”,“ldaps”,“pop3”,“pop3s”,“rtsp”,“smb”,“smbs”,“smtp”,“smtps”,“telnet”,“tftp”]}
来自 circusd:
{“version_number”:472321,“age”:3,“features”:4163485,“ssl_version_number”:0,“version”:“7.53.1”,“host”:“x86_64-redhat-linux-gnu”,“ssl_version”:“NSS/3.28.4”,“libz_version”:“1.2.8”,“protocols”:[“dict”,“file”,“ftp”,“ftps”,“gopher”,“http”,“https”,“imap”,“imaps”,“ldap”,“ldaps”,“pop3”,“pop3s”,“rtsp”,“scp”,“sftp”,“smb”,“smbs”,“smtp”,“smtps”,“telnet”,“tftp”]}
我们安装了两个版本的 curl - 我无法删除旧版本,因为 yum 和其他系统进程都依赖它,但我需要支持 HTTP/2 的新版本。
我的问题是,如何强制 PHP 使用较新的库?这在我们的测试环境中运行良好(即两个库和 PHP 都看到较新的库),所以我假设存在某种路径问题。
答案1
最有可能的是,php 针对不同的环境使用了不同的 php.ini 文件。最简单的方法是使用 php -i 或 phpinfo(); 来确定每个环境使用的 php.ini 文件到底是什么。这样您就可以开始让两个环境使用相同的 curl 版本。这可能很简单,只需从正确的 php.ini 创建一个符号链接到错误的 php.ini 即可。祝你好运!