PHP在命令行上输出缓冲

时间:2011-04-05 18:15:58

标签: php command-line output-buffering

我有一个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)也没有效果;

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我无法使用PHP 5.3复制此问题。

[charles@lobotomy ~]$ cat includeme.php
<?php

echo "Oh hi!\n";
?>
I am an include!

[charles@lobotomy ~]$ cat includehim.php
<?php

$content_file = './includeme.php';

if(file_exists($content_file)) {
  ob_start();
  include($content_file);
  $content = ob_get_contents();
  ob_end_clean();
}
[charles@lobotomy ~]$ php includehim.php
[charles@lobotomy ~]$

在互动提示下:

[charles@lobotomy ~]$ php -a
Interactive shell

php > $content_file = './includeme.php';
php > if(file_exists($content_file)) {
php {   ob_start();
php {   include($content_file);
php {   $content = ob_get_contents();
php {   ob_end_clean();
php { }
php >
php > echo $content;
Oh hi!
I am an include!

php > exit;