【问题标题】:Installing oci8 on Centos 8 running Apache and php-fpm在运行 Apache 和 php-fpm 的 Centos 8 上安装 oci8
【发布时间】:2021-10-10 20:46:08
【问题描述】:

我已经安装了 oracle instantclient 19.3,并且可以看到 OCI8 通过运行 php -m 从终端加载到 PHP 中。我还将 LD_LIBRARY_PATH 和 ORACLE_HOME 以及环境变量添加到 /etc/php-fpm.d/www.conf。它们正确显示在 phpinfo 的环境部分中。

但是,oci8 仍然没有显示从 apache 加载。

关于我还可以尝试什么来使它起作用的任何建议?

【问题讨论】:

  • CLI 和 FPM 可能使用两个不同的配置文件。通过 apache 提供的页面运行 phpinfo() 以查看它正在加载的配置文件。在您的实时 Apache 环境中,您不需要 LD_LIBRARY_PATH 或 ORACLE_HOME,它们仅在编译模块时使用。
  • 我在 phpinfo 中寻找什么配置文件?我假设您的意思是/etc/php.ini?如果我运行 php -m -c /etc/php.ini 然后 oci8 出现。只是不在 Apache 中,而是在 Apache 中加载的配置文件。

标签: php oracle apache centos8 instantclient


【解决方案1】:

在 Linux 上,LD_LIBRARY_PATH 必须在进程启动之前设置。

在 Oracle Linux 8 / RHEL 8 上我发现我需要编辑 /etc/php-fpm.d/www.conf 并添加:

env[LD_LIBRARY_PATH] = /usr/lib/oracle/21/client64/lib:$LD_LIBRARY_PATH

我已经安装了 Oracle Instant Client RPM 软件包;更改路径以适合您的图书馆位置。

我还使用 setenforce permissive 禁用了 SELinux,以避免出现错误 ORA-12546: TNS:permission denied

使用 Instant Client 时,不应设置 ORACLE_HOME

【讨论】:

  • 我在某处读到 centos 8 不再使用 /etc/sysconfig/httpd。
  • 我已经更新了答案。 Centos 8 可能与 RHEL 8 类似。这似乎与您尝试的类似,因此请三重检查您是否一切正确,并重新启动 php-fpm 服务。
  • 仍然没有骰子...从 /etc/php-fpm.d/www.conf 中删除了 ORACLE_HOME。添加 env[LD_LIBRARY_PATH] = /usr/lib/oracle/19.3/client64/lib:$LD_LIBRARY_PATH reloaded php-fpm: systemctl reload php-fpm restarted apache: apachectl restart From Apache Environment 显示:LD_LIBRARY_PATH /usr/lib/oracle/19.3 /client64/lib:$LD_LIBRARY_PATH 但在 shell 提示符下运行 php -m 显示 oci8 已加载
  • 我必须恢复到 Centos 7 才能工作;(
猜你喜欢
  • 1970-01-01
  • 2019-08-23
  • 2020-11-17
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
相关资源
最近更新 更多