我遇到了一个奇怪的问题。我以前从未见过这样的东西,我找不到任何类似的问题。我在Windows 7,PHP 5.5.x和Apache。
我的框架本身就是提供javascript(例如readfile(...)
)。这种方法允许我即时翻译和提供javascript文件(呃!)。例如,如果JS代码包含var msg="<translate>This string</translate>";
之类的smth,那么当框架提供服务时,<translate>
标记将被翻译为
preg_replace_callback('/<translate>(.*?)<\/translate>/i', $callback, $content);
$callback
是翻译$content
的函数。
$callback
可归结为这个简单的代码(仍然会导致JS渲染不正确):
$callback = function($matches) {
return $matches[1];
};
总而言之,它在Linux上运行良好,但是当我尝试在Windows上运行时,我的Firefox拒绝解释已翻译的JS代码!
有没有人有类似的问题?
我还试过preg_replace
,preg_replace_callback
甚至str_replace
只是为了好玩。 JS代码中的任何字符串替换都会导致客户端出错。在charset=utf-8
标题中明确设置Content-Type
也无济于事。
答案 0 :(得分:0)
在我删除所有内容并在Chrome中再次看到Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH
消息后,我就意识到了这一点。问题是我发送了一个Content-Length
标题(在我翻译我的JS文件之前,长度设置为filesize($file)
。因此问题就出现了。
我不确定为什么它可以在Linux中使用(或多或少)Apache的默认设置,但它不适用于Windows的Apache。
@ dman2306感谢您的输入!