CentOS中Lnmp环境使用Yum安装扩展后所在目录路径问题

CentOS中我使用Yum安装php扩展,安装的.so文件存储在了/usr/lib64/php/modules目录下,可是我访问Nginx服务器,项目却报异常说找不到我所安装的扩展,随后我打印了下phpinfo发现extension_dir是在/opt/remi/php72/root/usr/lib64/php/modules这个位置。

我怀疑我用yum安装的php扩展只能在php-cli模式下被载入,通过php-fpm访问项目确是另外一个目录(/opt/remi/php72/root/usr/lib64/php/modules),这种情况我该如何解决?

是否应该建立软连接?或者还有其它办法吗?

阅读 4.3k
4 个回答

这个我没有用过,不过看你的描述我觉得

  1. 软连接可以
  2. php-fpm 是否有启动或者配置参数可以指定lib的目录 ?

现在只是安装了扩展,还需要在 php.ini 中配置。

extension=xxx.so

排查解决方法主要有这几个

  1. 检查你启动php-fpm的php环境和yum安装的是否是同一个环境,从你描述的 php-fpm 的目录是 /opt/remi/php72/root/usr/lib64/php/modules 猜测可能你的服务器上面存在两套PHP环境,命令行运行的和 FPM 启动的不是同一个
  2. 可以通过软链接的方式,但是需要确保第一步中环境是一致的
  3. 如果启动fpm的环境和你用命令行的不是同一个,那就需要使用你这个php72环境的 pecl 来安装或者它下面的 php-config 等来自己编译扩展了
  1. 确认你项目运行使用的PHP版本和命令行模式下使用的是否是同一个版本
  2. 确定版本之后,可以通过修改对应版本的php.ini文件,将你安装.so拓展加到php.ini文件。

参考如下:php.ini拓展

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题