我在 Vagrant 中设置了一个新的 CentOS 7 服务器来运行 PHP、nginx、MySQL(MariaDB)和 memcached(注意末尾的 d)。我可以让 memcached 正常运行,但无法让 PHP 加载 Amazon Elasticache .so 文件。我知道该文件存在。我如何让 PHP 加载此扩展,或者排除它无法加载的原因?
我已按照此处的说明安装此扩展:安装适用于 PHP 的 ElastiCache 集群客户端
如何解决 PHP 问题以及为什么它可能无法加载扩展?
答案1
除了@Bazze 关于 libsas 的出色评论之外,您可能还缺少依赖项(或对正确架构的依赖项)
请注意,对于某些应用程序来说,必须同时安装 32 位和 64 位库是很常见的。
如果您使用ldd /path/to/amazon-elasticache-cluster-client.so
,您是否看到任何提到“未解决”或类似内容的行?(将整个输出发布在您的问题中。
诸如此类的常见问题可能只需通过运行即可解决ldconfig
,它应该在安装(或添加符号链接)库后运行。
另一个问题可能与权限或访问控制系统(如 SELinux)有关。sestatus
显示什么?也许您需要遍历restorecon
包含库的目录。
答案2
有时只需在命令行输入:
$ php -m
查看已加载的模块将显示有关某些模块未加载的原因的信息。此外,命令行有时会显示导致模块无法加载的 ini 文件语法错误:
$ php --ini
这些是我调试未加载的模块时要做的第一件事。