PHP:为什么我的输出缓冲不起作用?

时间:2018-11-27 18:36:00

标签: php path output-buffering

我在两个不同的路径中使用输出缓冲,代码基本相同,但是其中一个从不返回值,为什么?

version.php:

<?php

    echo "v1.1.8";

working.php:

<?php

    ob_start();
    include dirname(__FILE__)  . "/version.php";
    $version = ob_get_contents();
    ob_end_clean();

    // returns "v1.1.8"
    return $version;

notWorking.php:

<?php

    ob_start();
    include dirname(__FILE__) . "/../../../../version.php";
    $version = ob_get_contents();
    ob_end_clean();

    // returns empty
    return $version;

目录结构,由tree命令打印:

.
|-- version.php
|-- working.php
|-- directory
|   |-- directory
|   |   |-- directory
|   |   |   |-- directory
|   |   |   |   |-- notWorking.php

环境详细信息:

  • PHP版本5.2.17
  • Ubuntu 12.04.5 LTS

1 个答案:

答案 0 :(得分:0)

给出的代码基本相同。我想您没有找到第二个文件的正确路径。

为了调试它,请运行以下代码

// should return the full path to the file
die(realpath(dirname(__FILE__)  . "/../../../../version.php"));

如果上面的命令返回false,那么您最喜欢将文件路径错误。