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++++++++++++++++++++++++++++++++