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

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));



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AKULAKK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值