PHP 命令行上的输出缓冲

发布于 2024-10-30 04:39:50 字数 529 浏览 4 评论 0原文

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

有什么想法吗?

I have a PHP script that I want to run on the command line. This script, among other things, needs to load a PHP file that contains both PHP and HTML content and get the rendered output from that file.

This code does exactly what I need, but not when run from the command line:

<?php

// ...
if(file_exists($content_file)) {
  ob_start();
  include($content_file);
  $content = ob_get_contents();
  ob_end_clean();
}

?>

When run in the browser, my script gets the rendered output of the PHP file via include(), and stores the output in $content.

However, when I execute this script on the command line, the contents of the PHP file are echoed out, and $content never gets set.

I've searched the documentation, but nothing seems to work. Calling ini_set('implicit_flush', false) has no effect, nor does ob_implicit_flush(0);

Any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

这个俗人 2024-11-06 04:39:50

我无法使用 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;

I am unable to duplicate this problem using 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 ~]$

And at the interactive prompt:

[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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文