我正在尝试在 RedHat 服务器 (RHEL7) 上为我的 Apache 服务器安装 OCI8。
此时,当我尝试使用 Symphony 连接到我的服务器时,出现以下错误:
异常“ErrorException”:使用未定义的常量 OCI_COMMIT_ON_SUCCESS - 假定为“OCI_COMMIT_ON_SUCCESS”
这是我安装 OCI8 所做的事情。
- 安装 oracle-instantclient11.2 RPM(开发版和基本版)。
- OCI8 软件包的安装:
有关信息,我的服务器上已有 Oracle 12C,但我想将我的 PHP 应用程序连接到另一台服务器 (Oracle 11GR2)。
tar zxvf oci8-2.1.7.tgz
cd oci8-2.1.7
phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib --with-php-config=/opt/rh/rh-php56/root/usr/bin/php-config
make
make install
- 编辑 php.ini 以添加
extension=oci8.so
.
我找到了这个thread https://stackoverflow.com/a/6758426/7334162我尝试使用oci_connect
我收到此错误:
致命错误:调用未定义的函数 oci_connect()
我该如何纠正这个问题?
EDIT:我刚刚发现这个错误php_error.log:
[2017 年 9 月 26 日 16:14:12 欧洲/巴黎] PHP 警告:PHP 启动:无法加载动态库 '/opt/rh/rh-php56/root/usr/lib64/php/modules/oci8.so' - /opt/rh/rh-php56/root/usr/lib64/php/modules/oci8.so:未定义符号:第 0 行未知中的 _emalloc_128
根据这个thread https://community.oracle.com/thread/2480395,PHP警告是由库冲突引起的。所以,我手动完全卸载OCI8并重新安装。但是,这一次,我没有选择最后一个版本,因为我在 PECL 网站上看到:
使用“pecl install oci8-2.0.12”进行安装
适用于 PHP 5.2 - PHP 5.6。
另外,因为我的服务器上已经有 Oracle 数据库,所以我使用这些命令来安装扩展:
tar zxvf oci8-2.0.12.tgz
cd oci8-2.0.12
phpize
./configure --with-oci8=shared,$ORACLE_HOME --with-php-config=/opt/rh/rh-php56/root/usr/bin/php-config
make
make install
现在,我可以在我的 phpinfo 页面中找到列出的 OCI8 扩展。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)