在脚本PHP输出缓冲区设置被服务器忽略

时间:2012-07-03 22:40:52

标签: php

我一直在尝试按需将某些脚本的输出刷新到浏览器,但它们不适用于我们的制作服务器。

例如,我尝试运行“Phoca Changing Collat​​ion”工具(在Google上找到它),在脚本完成执行之前我没有看到任何输出。

我已经尝试立即刷新其他脚本上的缓冲区,该脚本在任何服务器上工作正常,但是这个使用以下代码:

echo "something";
ob_flush();
flush();

设置“ob_implicit_flush(1);”也没有帮助。

服务器是Apache 2.2.21,在Linux上运行PHP 5.2.17。你可以在这里看到我们的php.ini文件,如果这将有所帮助: http://www.smallfiles.org/download/1123/php.ini.html

这不是我们在服务器忽略脚本内指令时遇到的唯一问题。服务器还会忽略超时编码,例如:

ini_set('max_execution_time', 900*60);

set_time_limit(86400);

脚本总是超出php.ini默认值。

如果在IE或Firefox中执行脚本,似乎无关紧要。

2 个答案:

答案 0 :(得分:1)

解开了这个谜。他们两个。

要解决输出缓冲区问题,我需要关闭.htaccess文件中的gzip压缩,不过我希望我可以在脚本中进行。

以下是您应该在.htaccess文件中添加的内容:

<IfModule mod_gzip.c>
    mod_gzip_on  No
</IfModule>

SetEnv no-gzip dont-vary

要修复脚本无错误地终止,我检查了我的Apache日志文件,发现它不是PHP,而是在Apache配置中: 指定的超时已过期:ap_content_length_filter:apr_bucket_read()失败

必须增加Apache超时以防止此错误使其看起来像我的脚本超时。在Apache中启用KeepAlive也有助于一劳永逸地解决问题。

希望这有助于某人并感谢所有人的帮助!

答案 1 :(得分:0)

您可能正在加载不正确的php.ini文件,因为它往往会根据目录进行更改。

要检查已加载的php.ini文件,请写下:echo php_ini_loaded_file();,它将为您提供所在目录。请参阅php.net

如果失败,请参阅serverfault.com了解服务器stackexchange站点。