php fpm没有';当php cli加载kafka扩展时,不加载kafka扩展

php fpm没有';当php cli加载kafka扩展时,不加载kafka扩展,php,apache-kafka,Php,Apache Kafka,我编译php kafka扩展,如前所述 我可以在php cli模式下使用Kafka类,但在php fpm(web请求)模式下未找到类“Kafka”错误 php--info | grep kafka表示扩展存在,而html中的phpinfo表示扩展不存在 我可以从phpinfo页面确认php fpm和php cli使用相同的php.ini 那么,我怎样才能发现问题所在呢 php版本:5.5.13 php fpm版本:5.5.13我找到了答案 php fpm模式中未找到类“Kafka”的错误是由ph

我编译php kafka扩展,如前所述

我可以在php cli模式下使用
Kafka
类,但在php fpm(web请求)模式下未找到
类“Kafka”
错误

php--info | grep kafka
表示扩展存在,而html中的
phpinfo
表示扩展不存在

我可以从
phpinfo页面
确认php fpm和php cli使用相同的php.ini

那么,我怎样才能发现问题所在呢

php版本:5.5.13 php fpm版本:5.5.13

我找到了答案

php fpm模式中未找到类“Kafka”的
错误是由php fpm无法加载Kafka扩展引起的。虽然我在
php.ini
中添加了
extension=kafka.so
。但是加载扩展时发生了一些错误

我通过使用
dl
手动加载扩展找到了原因,并在响应中得到错误。为什么php fpm在加载扩展的过程中发生错误时保持沉默。也许我错过了一些配置

无论如何,找到了原因。Php fpm无法在加载扩展卡夫卡时加载librdkafka。librdkafka位于dir
/usr/local/lib
中,它不在red hat中的ld搜索路径中。检查/etc/ld.so.conf以获取搜索路径

/usr/local/lib
添加到/etc/ld.so.conf并运行ldconfig解决问题

cli模式工作的原因是变量$LD_LIBRARY_PATH=“/usr/local/lib”

有关加载过程的更多信息,请检查

要搜索的目录列表存储在文件/etc/ld.so.conf中。许多Red Hat派生的发行版通常不在/etc/ld.so.conf文件中包含/usr/local/lib。我认为这是一个错误,并且添加/Ur/Studio/LIB到/ETC/LD.SO.CONF是在Red Hat派生系统上运行许多程序所需的一个通用的“修复”。 在程序启动时搜索所有这些目录将非常低效,因此实际上使用了缓存安排。默认情况下,程序ldconfig(8)读取文件/etc/ld.so.conf,在动态链接目录中设置适当的符号链接(因此它们将遵循标准约定),然后将缓存写入/etc/ld.so.cache,供其他程序使用。这大大加快了访问图书馆的速度。这意味着无论何时添加DLL、删除DLL或更改DLL目录集,都必须运行ldconfig;运行ldconfig通常是包管理器在安装库时执行的步骤之一。在启动时,动态加载程序实际上使用文件/etc/ld.so.cache,然后加载它需要的库

中的安装指南介绍了如何运行ldconfig,但red hat有一个特殊情况,即lib dir不在ld config文件中