Apache上部署Pro*c常见的一个错误

发表于:2007-05-25来源:作者:点击数: 标签:
Apache上部署Pro*c常见的一个错误 在Apache上部署Pro*c,经常会出现 服务器 500错误.最近 测试 Linux上的Oracle iAS, 遇到问题不少,在这里把解决500错误的过程和大家大致描述一下,希望对大家能有所帮助. 操作系统:RedHat AdvanceServer 2.1 数据库: Oracle

Apache上部署Pro*c常见的一个错误

在Apache上部署Pro*c,经常会出现服务器500错误.最近测试Linux上的Oracle iAS,
遇到问题不少,在这里把解决500错误的过程和大家大致描述一下,希望对大家能有所帮助.

操作系统:RedHat AdvanceServer 2.1
数据库: Oracle 8.1.7.4
Apache: 1.3.12

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
情况1:
假设我们请求的连接如下:

http://192.168.0.116:7777/cgi-bin/test

浏览器得到的错误信息如下:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator,
.net">Fenng@ITPub.net and inform them of the time the error oclearcase/" target="_blank" >ccurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一般的,管理员都会检查Apache的Logs目录下的error.log文件.检查该文件,提示信息如下:

test: error while loading shared libraries: libclntsh.so.8.0: cannot open shared object file: No such file or directory

别管那么多,如果有Metalink帐号的话,先去看看,查了几个帖子,
提示说Apache的环境变量不正确.有些语焉不详.

既然提示信息是找不到libclntsh.so.8.0文件,首先看看系统是不是有这个库文件:

[oracle@Linux lib]$ pwd
/u/app/oracle/product/8.1.7/lib
[oracle@Linux lib]$ ls -l libcln*
lrwxrwxrwx    1 oracle   root           16 Oct 23 13:56 libclntsh.so -> libclntsh.so.8.0
-rwsrwxr-x    1 oracle   root      6285134 Oct 23 13:56 libclntsh.so.8.0
-rwsrwxr-x    1 oracle   root      8689756 Oct 23 13:57 libclntst8.a

哦,此文件存在.

接下来检查环境变量:

[oracle@Linux lib]$ set | grep LIB
LD_LIBRARY_PATH=/u/app/oracle/product/ias/lib:/lib:/usr/lib:/usr/openwin/lib

Ok.问题定位:用户的环境变量不正确.

解释:原来系统中还安装过9ias ,管理员一时疏忽,环境变量没有调整好.

修改后,得到解决.

(哇,你这也太简单了,没劲)OK,看下一个情形.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

情况二:

系统环境:多加了Oracle 9iAS ,其它同上.
Apache是用iAS 默认的安装.

同样出现500错误.

有了上次的经验,逐一的查找.....

居然...不管用

用户环境变量正确,在Shell下执行test程序,可以执行,并输出正确结果!

上网,查找Google,Metalink,得到的信息大致如下:Apache 的环境变量不正确

建议在Httpd.conf中加入

SetEnv ORACLE_HOME 'your path'
SetEnv ORACLE_SID  'your  sid'
SetEnv LD_LIBRARY_PATH 'your lib path'

尝试之后,没有一点作用.

看来,解决的方法不对路.

从头分析:登录到oracle用户下,此时环境变量正确的,然后启动/停止Apache,用的是 apachectl start/stop命令.
这个apachectl命令会不会有问题??

$more apachectl

找到了这样一段:
if [ -z "$LD_LIBRARY_PATH" ]
then
        LD_LIBRARY_PATH=/u/app/oracle/product/ias/lib ; export LD_LIBRARY_PATH
else
        LD_LIBRARY_PATH=/u/app/oracle/product/ias/lib:${LD_LIBRARY_PATH} ; export LD_LIBRARY_PATH
fi

又是iAS惹的祸!修改之后.问题解决.

老生常谈的建议:在操作的过程中,对配置文件修改的时候,事先做个备份是个好习惯。否则,恢复不到初始状态也很头疼的哦。

附,系统的一些配置信息大致如下:

[oracle@Linux bin]$ uname -a
Linux Linux 2.4.9-e.3 #1 Fri May 3 17:02:43 EDT 2002 i686 unknown
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
PL/SQL Release 8.1.7.4.0 - Production
CORE    8.1.7.0.0       Production
TNS for Linux: Version 8.1.7.4.0 - Production
NLSRTL Version 3.4.1.0.0 - Production

+++++++++++++++++++++++++++END++++++++++++++++++++++++++++++++

原文转自:http://www.ltesting.net