所以,如果您想要了解当前的问题,请跳过以下部分,了解一些历史。
我们正在 SPARC Solaris 10 环境中将 Apache 2.2.20 升级到 Apache 2.4.23。此服务器旨在用作 Web 托管服务器,它托管多个 ColdFusion 10 应用程序。
为了简化升级过程,我们使用 OpenCSW.org 下载预编译的 SPARC Solaris 10 软件包,该软件包应包含完全独立的 Apache 2.4.23 安装所需的所有必要的先决条件,以便应用程序所有者可以测试并将其应用程序从 Apache 2.2.20 迁移到 2.4.23。
不幸的是,我们无法让 ColdFusion 10 与 Apache 2.4.23 一起工作。尝试启动 Apache 实例时出错,导致 mod_jk.so 无法正确加载,这可能是由于“ap_log_error”定义不匹配造成的。根据我的研究,ColdFusion 10 为每个实例提供了自己的 ColdFusion 主题 Tomcat 连接器 (mod_jk.so) 供使用,但似乎 ColdFusion 10 在创建新实例并指定 Apache 2.4.23 安装位置时,仍然会生成不兼容的 Apache 2.2 mod_jk.so。
显然,您可以自己编译 mod_jk.so,但您必须使用 Adobe 的连接器源代码,因为 Adobe 对源代码进行了某些更改,以便它能够与 ColdFusion 配合使用。用户 jonathan_morgan 在此处发布了有关如何实现此目的的详细帖子:https://forums.adobe.com/message/5823263#5823263
因此,虽然我能够 ./configure 连接器,但运行“make”总是失败。
我尝试使用 gmake 和 make 来编译这个,这里是当前 gmake 操作及其内容的读数:
Finished prerequisites of target file 'mod_jk.la'.
必须重建目标‘mod_jk.la’。 gmake[1]:进入目录‘/apps/webserver/coldfusion10/connector-source/native/apache-2.0’/opt/csw/libexec/apr/build-1/libtool --silent --mode=link /opt/solarisstudio12.4/bin/cc -std=c99 -I/opt/csw/include/apache2 -DHAVE_CONFIG_H -DUSE_APACHE_MD5 -I../common -I../common -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_LARGEFILE64_SOURCE -xO3 -m32 -xarch=sparc -DSSL_EXPERIMENTAL -DSSL_ENGINE -DHAVE_APR -I/opt/csw/include -I/opt/csw/include -DHAVE_CONFIG_H -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_LARGEFILE64_SOURCE -Wl,-m32 -Wl,-xarch=sparc -Wl,-L/opt/csw/bdb48/lib -Wl,-L/opt/csw/lib -o mod_jk.la -module -rpath /opt/csw/lib/apache2/modules -avoid-version mod_jk.lo ../common/jk_ajp12_worker.lo ../common/jk_connect.lo ../common/jk_msg_buff.lo ../common/jk_util.lo ../common/jk_ajp13.lo ../common/jk_pool.lo ../common/jk_worker.lo ../common/jk_ajp13_worker.lo ../common/jk_lb_worker.lo ../common/jk_sockbuf.lo ../common/jk_map.lo ../common/jk_uri_worker_map.lo ../common/jk_ajp14.lo ../common/jk_ajp14_worker.lo ../common/jk_md5.lo ../common/jk_shm.lo ../common/jk_ajp_common.lo ../common/jk_context.lo ../common/jk_url.lo ../common/jk_status.lo 将子进程 72278 (mod_jk.la) PID 26001 放入链中。活着的孩子 72278 (mod_jk.la) PID 26001 ld: 致命: 无法识别的选项 '-x' ld: 致命: 使用 -z 帮助选项获取使用信息 收割失去的孩子 72278 PID 26001 gmake[1]:* [Makefile:83: mod_jk.la] 错误 2 从链中删除子进程 72278 PID 26001。gmake[1]: 离开目录 '/apps/webserver/coldfusion10/connector-source/native/apache-2.0' 正在收割丢失子进程 6fb90 PID 25992 gmake: *[Makefile:465: all-recursive] 错误 1 从链中删除子 6fb90 PID 25992。
以下是 Solaris 的 make 操作的结果:
/opt/csw/libexec/apr/build-1/libtool --silent --mode=link /opt/solarisstudio12.4/bin/cc -std=c99 -I/opt/csw/include/apache2 -DHAVE_CONFIG_H -DUSE_APACHE_MD5 -I../common -I ../common -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_LARGEFILE64_SOURCE -xO3 -m32 -xarch=sparc -DSSL_EXPERIMENTAL -DSSL_ENGINE -DHAVE_APR -I/opt/csw/include -I/opt/csw/include -DHAVE_CONFIG_H -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_LARGEFILE64_SOURCE -Wl,-m32 -Wl,-xarch = sparc -Wl,-L / opt / csw / bdb48 / lib -Wl,-L / opt / csw / lib -o mod_jk.la -module -rpath / opt / csw / lib / apache2 / modules -avoid-version mod_jk.lo ../common/jk_ajp12_worker.lo ../common/jk_connect.lo ../common/jk_msg_buff.lo ../common/jk_util.lo ../common/jk_ajp13.lo ../common/jk_pool.lo ../common/jk_worker.lo ../common/jk_ajp13_worker.lo ../common/jk_lb_worker.lo ../common/jk_sockbuf.lo ../common/jk_map.lo ../common/jk_uri_worker_map.lo ../common/jk_ajp14.lo ../common/jk_ajp14_worker.lo ../common/jk_md5.lo ../common/jk_shm.lo ../common/jk_ajp_co>mmon.lo ../common/jk_context.lo ../common/jk_url.lo ../common/jk_status.lo ld:致命:无法识别的选项“-x” ld:致命:使用 -z 帮助选项获取使用信息 *** 错误代码 2 make:致命错误:目标命令失败
mod_jk.la' Current working directory /apps/webserver/coldfusion10/connector-source/native/apache-2.0 *** Error code 1 The following command caused the error: fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no; sane_makeflags=$MAKEFLAGS; if test -n '' && test -n ''; then sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \ ]*) bs=\\; sane_makeflags=
printf“%s \ n” “$MAKEFLAGS”| sed“s/$bs$bs[$bs $bs ]//g”;; esac; fi; skip_next=no; strip_trailopt () { flg=
printf'%s \ n'“$flg”| sed“s/$1。$//”; }; for flg in $sane_makeflags; do test $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*) continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=
echo 全递归 | sed s/-recursive//; \ case "all-recursive" in \ distclean-* | maintainer-clean-*) list='common apache-2.0' ;; \ *) list='common apache-2.0' ;; \ esac; \ for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ make "$target-am" || exit 1; \ fi; test -z "$fail" make: Fatal error: Command failed for target
全递归'
由于某些非法选项“-x”,mod_jk.la 似乎失败了。如果 -x 是非法选项,那么为什么将其配置为使用此选项,我该如何或在哪里更改它?据我所知,文件 mod_jk.la 在文件系统中不存在。据我从我的研究得知,“-x”是 Solaris ld 链接器中已弃用和删除的选项,但我不知道如何指示 make 操作忽略 -x 选项等。
答案1
以下是我的一位运营人员的回答:
CF10 最初不支持 Apache 2.4。直到更新 14(我认为是它)才允许使用 Apache 2.4。他们需要在内置 Web 服务器(通常在端口 8500)上运行 ColdFusion,然后完全修补 CF,然后才能将其连接到 Apache 2.4。
希望您已经清楚了。您需要确保您的 CF10 处于正确的补丁级别。如果这有帮助,或者您希望我们直接参与,请告诉我。祝您好运!