Joe*_*ose 3 apache coldfusion session
我刚刚在我的计算机上安装了ColdFusion 11 Developer Edition,以使我的LocalHost环境与我们最近升级的开发和生产环境相匹配.
但是现在,在其他地方工作的相同代码在新安装上失败 - 具体来说:
当我们的服务器管理员在12月从ColdFusion 9升级到11时也会发生此错误,所以我联系他以了解他是如何解决的.但是,一个重要的区别是他使用Apache Web服务器安装在Linux机器上,而我使用ColdFusion 11 Developer Edition的内置Web服务器安装在Windows 7计算机上.
无论如何,他告诉我他已经做了两处修改来解决他的系统上的这个错误:
global.conf文件中,添加以下行:RewriteEngine onRewriteRule .* - [E=REMOTE_USER:%{REMOTE_USER}]RewriteRule .* - [E=SCRIPT_NAME:%{REQUEST_URI}]RewriteRule .* - [E=AUTHENTICATE_CN:%{ENV:AUTHENTICATE_CN}]RewriteRule .* - [E=AUTHENTICATE_DEPARTMENTNUMBER:%{ENV:AUTHENTICATE_DEPARTMENTNUMBER}]RewriteRule .* - [E=AUTHENTICATE_GIVENNAME:%{ENV:AUTHENTICATE_GIVENNAME}]RewriteRule .* - [E=AUTHENTICATE_MAILALTERNATEADDRESS:%{ENV:AUTHENTICATE_MAILALTERNATEADDRESS}]RewriteRule .* - [E=AUTHENTICATE_MAIL:%{ENV:AUTHENTICATE_MAIL}]RewriteRule .* - [E=AUTHENTICATE_ORGANIZATIONALSTATUS:%{ENV:AUTHENTICATE_ORGANIZATIONALSTATUS}]RewriteRule .* - [E=AUTHENTICATE_SERIALNUMBER:%{ENV:AUTHENTICATE_SERIALNUMBER}]RewriteRule .* - [E=AUTHENTICATE_SN:%{ENV:AUTHENTICATE_SN}]RewriteRule .* - [E=AUTHENTICATE_TELEPHONENUMBER:%{ENV:AUTHENTICATE_TELEPHONENUMBER}]RewriteRule .* - [E=AUTHENTICATE_UID:%{ENV:AUTHENTICATE_UID}]global.conf在我的安装中没有看到任何文件.Application.cfc网络搜索效率不高,但确实让我得到了ColdFusion 8的旧指令.基于那篇文章,我尝试将以下行添加到我的Application.cfc文件中 - 但这并没有解决错误:
<cfset this.sessionManagement = "Yes" >
<cfset this.name = "ApplicationName" >
Run Code Online (Sandbox Code Playgroud)
我在Stack Overflow上搜索了类似的问题,但没有找到任何有希望的线索.我在这里找到了一个类似的问题,但是这个人似乎遇到了与我遇到的问题不同的问题:在他的情况下,SESSION变量存在(因为他可以证明<cfdump>,但后来在代码中被忽略.但在我的情况下SESSION变量似乎并没有首先创建.
我确实尝试了其中一条建议,但是:将以下内容添加到onSessionStart():
SESSION.User = CreateObject("component", "cfc.User");
不幸的是,这并没有解决问题.
我怀疑问题的关键是我使用内置服务器,并且我必须在配置文件中添加行,就像我们的服务器管理员使用Apache global.conf文件一样.
我需要做些什么来让我的代码在这个本地ColdFusion 11安装上运行?
最终,问题的原因是配置问题(由有缺陷的程序设计加剧):
在OnApplicationStart()函数中,有一个对数据库的调用,该调用失败,因为我忽略了JAR在这个新安装上安装相应的文件.这将程序执行发送到该OnError()函数.在我们的例子中,OnError()函数SESSION在其报告中包含来自变量的一些信息- 但由于程序执行从未完成OnApplicationStart()函数,因此它从未进入创建变量的OnSessionStart()函数SESSION.这导致"变量SESSION未定义"错误.
我赞成Kris的回答并将其标记为正确.(为新用户做得很好,Kris!)
小智 6
通过确定安装与代码是否存在问题,继续进行故障排除.我会尝试使用CF服务器配置工具在Apache中创建一个新站点,然后在CFB中创建一个新项目.创建Application.cfc文件和index.cfm.在Application.cfc中,请确保您拥有this.sessionManagement = true和this.clientManagement = true.在index.cfm中只是cfdump会话.如果此操作成功,您可以进一步查看现有代码.如果失败,您可能想尝试重新安装CF.