我试着建立与oracle数据库的连接,但我仍然不能设置模块。我使用的是HEL7.2服务器,我按照完整的教程来设置oracle即时客户端,并使用php对其进行了配置。有一件事我完全不明白,那就是在php -i执行之后会显示oci8模块:
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库路径:

发布于 2016-12-09 09:46:09
常见的问题是LD_LIBRARY_PATH不是为Apache设置的。尝试将其添加到/etc/sysconfig/httpd,如下所示:
LD_LIBRARY_PATH=/full/path/to/oracle-client
如果我没有记错的话,这个版本的Apache (i)不喜欢用于设置变量的export关键字(ii)需要一个完整的路径,因为它不会展开环境变量。如果我错了,请尝试这两种方法中的一种或两种。
有很多关于在免费的Underground Oracle & PHP Manual中设置环境的信息,例如,请参阅第108页上的'Setting Oracle environment Variables for Apache
你说你看了“整个教程”。有很多教程。我推荐Oracle's installation instructions。
发布于 2016-12-09 14:08:50
答案是:
setsebool -P allow_execstack 1
您还可以使用以下命令仅为oci8.so启用可执行堆栈:
execstack -c /usr/lib64/php/modules/oci8.so
发布于 2020-01-24 16:41:53
确保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 starthttps://stackoverflow.com/questions/41043724
复制相似问题