把nobody用户加到dba组里,保证nobody用户 
对tnsnames.ora文件有存取权限,否则PHP程序将会出现ORA-12154错误。

解决方案 »

  1.   

    运行一下这个,看看有什么错误
    <?
    $connection = OCILogon ("scott", "tiger","orcl") or die(OCIError($connection));
    $query = "select * from emp order by empno desc";
    $cursor = OCIParse ($connection, $query) or die(OCIError($connection));$result = OCIExecute ($cursor) or die(OCIError($connection));echo "<table width='100%' border='1' cellspacing='0' cellpadding='0' bordercolorlight='#000000' bordercolordark='#FFFFFF' bgcolor='#CCCCFF'>\n";
    echo "<tr bgcolor='#aaaaFF'><td>编号</td><td>姓名</td><td>工作</td></tr>\n";
    while (OCIFetchInto ($cursor, $values))
    {
        echo "<tr>\n";    
        for($i=0;$i<3;$i++)
        {
          echo "<td>$values[$i]</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>";
    OCICommit ($connection);
    OCILogoff ($connection);?>
      

  2.   

    to 楼上:
    不行啊,报错是
    Warning: _oci_open_server: Error while trying to retrieve text for error ORA-12154
      

  3.   

    我这边使用win client连接sunos上的db server,比较熟悉这个环境。
    阁下的问题,我暂时没时间模拟。。没这方面的经验..sorry
      

  4.   

    呵呵,谢谢,我折腾了半天终于解决了这个问题
    解决方法是修改http.conf文件将下面两行
    User nobody
    Group nobody
    改为:
    User oracle
    Group dba
    然后就可以了
    虽然你说的方法没有解决我的问题,但多少有提示,并且也只有你回答我的问题,
    所以100分还是给你
      

  5.   

    我看到了二楼说的啊,我修改/etc/group文件,将nobody加到dba那里去还是不行
    然后我chown tnsnames.ora 为nobody还是不行
    我是用oracle用户来设置oracle变量的,可能这样的话nobody用户就无法读取oracle变量了吧
      

  6.   

    apache是以nobody的身份来运行的,当然要读取到oracle的变量的。
    nobody用户加到dba的组里面,我认为应该没问题的。
      

  7.   

    将nobody加到dba组里是不是修改/etc/group文件
    然后在dba那行加入nobody?
    我是用这个方法的,居然不行