我一直在尝试按需将某些脚本的输出刷新到浏览器,但它们不适用于我们的制作服务器。
例如,我尝试运行“Phoca Changing Collation”工具(在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中执行脚本,似乎无关紧要。
答案 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站点。