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));
即可将目录正确的设置到本网站,搞定问题.