gpt4 book ai didi

php - oci_connect() 仅适用于命令行

转载 作者:可可西里 更新时间:2023-11-01 13:14:56 26 4
gpt4 key购买 nike

好的,所以我在使用 oci、apache、php 和 suse 时遇到了这个可怕的问题。首先,版本:

PHP 5.3.15 (cli)
Apache/2.2.22 (Linux/SUSE)
OCI8 1.4.9
SUSE 12.2 32 bit
Oracle client 10.2.0.4

问题

我有非常简单的 php 文件:

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
oci_connect('user', 'passwd', 'host/sid');
?>

当我从命令行运行它时,它执行得很好:

machine:~ # php oci.php
machine:~ #

但是当我在浏览器中运行它时,它会给我:

Warning: oci_connect() [function.oci-connect]: OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directories

Apache 配置

我已经为这个问题苦苦挣扎了一段时间,我很确定我的 Apache 配置是正确的。

我在启动任何 apache 进程之前导出了所有必需的变量 - 我添加了

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/oracle/home/lib; export LD_LIBRARY_PATH
ORACLE_HOME=/path/to/oracle/home; export ORACLE_HOME
TNS_ADMIN=/path/to/oracle/home/network/admin; export TNS_ADMIN
NLS_LANG=POLISH_POLAND.EE8MSWIN1250; export NLS_LANG

/etc/init.d/apache2脚本的开头(我通过/etc/init.d/apache2 start启动apache)。

Apache 从 wwwrun 用户运行,该用户在 oinstalldba 组中:

machine:~ # cat /etc/apache2/uid.conf
User wwwrun
Group www
machine:~ # id wwwrun
uid=30(wwwrun) gid=8(www) groups=8(www),113(oinstall),114(dba)
machine:~ # l $ORACLE_HOME
total 216
drwxr-xr-x 48 oracle oinstall 4096 Jan 25 17:07 ./
drwxrwxr-x 3 oracle oinstall 4096 Jan 25 17:01 ../
...
machine:~ #

可能的问题

我在 phpinfo(); 输出的 Environment 部分没有任何环境变量 - 这可能是问题所在吗?如果是,我该如何解决?这是某种安全问题吗?我读过有关启用 SELinux 的类似问题,但我没有,我的防火墙已关闭。

解决方案?

如有任何帮助,我们将不胜感激!

最佳答案

问题解决了!感谢these (设置 Oracle 环境 部分)说明和 ken_yap 对 this 的回答线程。

要将变量放入 Apache 的 Environment 部分,您只需将它们添加到 /etc/sysconfig/apache2 文件中:LD_LIBRARY_PATH=/path/to/oracle/lib.

关于php - oci_connect() 仅适用于命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14605099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com