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

apache|错误

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, Fenng@ITPub.net and inform them of the time the error occurred, 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++++++++++++++++++++++++++++++++

时间: 2024-11-01 00:38:21

Apache上部署Pro*c常见的一个错误的相关文章

MyEclipse 8.6在WebLogic10上部署SSH2项目出现了一下错误:

问题描述 MyEclipse8.6在WebLogic10上部署SSH2项目出现了一下错误:java.lang.ClassNotFoundException:javax.faces.webapp.UIComponentBodyTag在网search一下,解决ClassNotFoundException异常最常用的办法就是将出现异常类所在的jar包入到weblogic环境中的classpath最前面加载,将相应的antlr-2.7.6.jar.hibernate-jpa-2.0-api-1.0.0.

SQL Server导入导出数据时最常见的一个错误解决方法_MsSql

现在建站主要使用的还是ASP与PHP,这两种语言一般使用的数据库分别为SQL Server和mysql,这两种数据库各有各长处,也说不上谁好谁坏,看个人习惯了. SQL Server 导入和导出向导的作用是将数据从源复制到目标.该向导还可以为您创建目标数据库和目标表.但是,如果必须复制多个数据库或表,或者必须复制其他类型的数据库对象,则应改用复制数据库向导. 在数据库导入导出时总失败,错误信息如下: 复制代码 代码如下: 正在验证 (错误) 消息 错误 0xc0202049: 数据流任务 1:

SQL Server导入导出数据时最常见的一个错误解决方法

现在建站主要使用的还是ASP与PHP,这两种语言一般使用的数据库分别为SQL Server和mysql,这两种数据库各有各长处,也说不上谁好谁坏,看个人习惯了. SQL Server 导入和导出向导的作用是将数据从源复制到目标.该向导还可以为您创建目标数据库和目标表.但是,如果必须复制多个数据库或表,或者必须复制其他类型的数据库对象,则应改用复制数据库向导. 在数据库导入导出时总失败,错误信息如下: 复制代码 代码如下: 正在验证 (错误) 消息 错误 0xc0202049: 数据流任务 1:

tomcat上部署了一个项目,一访问就会自动关闭

问题描述 tomcat上部署了一个项目,一访问就会自动关闭 ay 12, 2015 9:49:47 PM org.apache.coyote.AbstractProtocol pause INFO: Pausing ProtocolHandler ["http-bio-8888"] May 12, 2015 9:49:47 PM org.apache.coyote.AbstractProtocol pause INFO: Pausing ProtocolHandler ["a

在Docker Swarm上部署Apache Storm:第2部分

[编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 点此查看<在Docker Swarm上部署Apache Storm:第1部分> 创建Swarm集群 如果一切顺利,那么你现在已经有了三台Ubuntu服务器,每个上面都运行了一个Docker守护进程.可以通过私有网络中的zk1.cloud和manager.swarm访问Ubuntu 1,或者

在Docker Swarm上部署Apache Storm:第1部分

[编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 如何在 Docker Swarm 上部署并调配Apache Storm集群,这个题目很有意思,Wolfram Wingerath将之描述为"真正有趣"的体验,在Tech上你很少能听见这种话.我好奇地问他是什么让使用容器比使用虚拟机更棒?他回答说: 作为一名Docker和Docker

在Apache Geronimo上部署J2EE应用程序

学习如何在 Apache Geronimo 上部署 Java 服务器页面(JSP).servlet 和不 同的企业 JavaBean(EJB).这篇文章包含 Apache Geronimo 需要的部署步骤,这与其他 Java 2 平台企业版(J2EE)容器不太一样. 学习在运行 Apache Geronimo 的计算机 上部署简单 J2EE 应用程序的步骤,了解这些步骤与其他符合 J2EE 规范的应用服务器的相 似之处.虽然这篇文章主要侧重于如何在 Apache Geronimo 上部署 EJB

J2EE应用程序部署:每台应用程序服务器上部署一个应用程序还是多个应用程序

引言 J2EE 规范 对将 J2EE 应用程序打包成一个文件扩展名为 EAR(Enterprise Archive( 企业压缩文档))的文件进行了定义,并且规定这些应用程序彼此独立.然而,该规范对 于如何最佳部署应用程序却只字未提.您是应该选择在每台应用程序服务器上只部署一个 J2EE 应用程序(EAR 文件)?还是应该在单独一台应用程序服务器上部署多个 J2EE 应用 程序(EAR 文件)? IBM WebSphere Application Server支持这两种选择.您应该选择哪种方式 ?

在Linux系统上部署Apache+Python+Django+MySQL环境

  Linux+apache+mysql+python+mod_python+Django 说明:系统rhel 5.3,默认安装httpd.mysql,没有安装的,请下载安装RPM包,删除/etc/httpd/modules/mod_python.so,如果有的话. 一.安装python ? 1 2 wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz tar xfz mod_python-2.7.11.tgz <br>cd