PHP使用ob_start+callback回调的时候路径设置不当出现的问题

来源:互联网 发布:ufida用友软件 编辑:程序博客网 时间:2024/06/05 10:20

Envirenment:

同一台服务器

N个独立文件夹

IIS6

独立的应用池

独立域名

PHP5.2 + IIS的 FastCGI搭建

-------------------------

Symptom:

多个网站都使用到了ob_start()缓冲区技术,同时使用callback回调函数来替换缓冲区内的关键字然后再输出到浏览器

遇到奇怪的事情是网站A的缓冲区内容居然跑到网站B去了,表现为网页标题A变成了 网站B的相同文件名的标题B!

经查,应该是FASTCGI和IIS协同工作不一致的问题导致

解决办法,

在回调函数中,加入路劲绑定.将cgi的工作路径强制改回正确的工作目录中

考虑到不同服务器环境可能导致的不一致,加入了兼容性判断


只需要在你的回调函数中加入一句:


if (strstr($_SERVER["SCRIPT_FILENAME"], $_SERVER["PHP_SELF"])) {
$reference = $_SERVER["SCRIPT_FILENAME"];
} else {
$reference = $_SERVER["PATH_TRANSLATED"];
}
chdir(dirname($reference));



即可将目录正确的设置到本网站,搞定问题.

0 0
原创粉丝点击