phpinfo()中没有oci8模块

时间:2016-12-08 16:02:56

标签: php oracle

我尝试与oracle数据库建立连接,但我仍然无法设置模块。我有rhel 7. 2服务器,我按照整个教程设置oracle instantclient并用php配置它。我完全不明白的一件事是oci8模块在php -i执行后显示:

oci8

OCI8 Support => enabled
OCI8 DTrace Support => disabled
OCI8 Version => 2.1.3
Revision => $Id: 59f993160cf983dd24bb391b68a65a17303d2dba $
Oracle Run-time Client Library Version => 12.1.0.2.0
Oracle Compile-time Instant Client Version => 12.1

Directive => Local Value => Master Value
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20

但是脚本中的phpinfo()中没有这样的模块。如何解决?

PHP版本7.0.13 服务器Apache(httpd)

LD库路径: enter image description here

[![在此处输入图像说明] [2]] [2]

3 个答案:

答案 0 :(得分:1)

常见的问题是没有为Apache设置LD_LIBRARY_PATH。 尝试将其添加到/etc/sysconfig/httpd,例如:

LD_LIBRARY_PATH=/full/path/to/oracle-client

如果我的版本正确,则此版本的Apache(i)不喜欢设置变量的export关键字(ii)需要完整路径,因为它不会扩展环境变量。如果我错了,试试其中一个或两个。

有很多关于在免费Underground Oracle & PHP Manual中设置环境的信息,请参阅第108页的“为Apache设置Oracle环境变量”

你说你跟着'整个教程'。有很多教程。我建议Oracle's installation instructions

答案 1 :(得分:0)

答案是:

setsebool -P allow_execstack 1

您还可以通过以下方式仅为oci8.so启用可执行堆栈:

execstack -c /usr/lib64/php/modules/oci8.so

https://serverfault.com/questions/314336/centos-6-php-can-not-load-gdchart-so-and-oci8-so-compiled-by-me

答案 2 :(得分:0)

确保oci8.so位于php扩展文件夹中

以centos为/usr/lib64/php/modules
在ubuntu xammp中是/opt/lampp/lib/php/extensions/no-debug-non-zts-20170718

cd  <extension folder >
sudo chmod 755 oci8.so

它对我有效

 ps ax | grep "fpm"

检查“ php-fpm:主进程”的 pid

sudo kill -9 <pid>

再次启动php-fpm

sudo service php-fpm start

https://stackoverflow.com/a/21693610/2538630启发