【发布时间】:2011-04-05 18:15:57
【问题描述】:
我有一个要在命令行上运行的 PHP 脚本。除其他外,该脚本需要加载一个包含 PHP 和 HTML 内容的 PHP 文件,并从该文件中获取渲染输出。
这段代码完全符合我的需要,但不是从命令行运行时:
<?php
// ...
if(file_exists($content_file)) {
ob_start();
include($content_file);
$content = ob_get_contents();
ob_end_clean();
}
?>
在浏览器中运行时,我的脚本通过 include() 获取 PHP 文件的渲染输出,并将输出存储在 $content 中。
但是,当我在命令行上执行此脚本时,PHP 文件的内容会被回显,并且 $content 永远不会被设置。
我已经搜索了文档,但似乎没有任何效果。调用 ini_set('implicit_flush', false) 没有效果,ob_implicit_flush(0);
有什么想法吗?
【问题讨论】:
-
尝试通过在包含前添加 @ 来消除错误:@include($content_file);
-
@Raisen,这里没有错误,使用
@错误静默操作符通常被认为是一种不好的做法。 -
你能包含你用来调用脚本的命令吗?我知道这是一个长远的目标,但这可能会影响您的输出。
-
来自不太可能但可能的错误部门:尝试
ob_start(NULL,0),并确保您的包含文件中不存在ob_flush()。
标签: php command-line output-buffering