我在两个不同的路径中使用输出缓冲,代码基本相同,但是其中一个从不返回值,为什么?
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
环境详细信息:
答案 0 :(得分:0)
给出的代码基本相同。我想您没有找到第二个文件的正确路径。
为了调试它,请运行以下代码
// should return the full path to the file
die(realpath(dirname(__FILE__) . "/../../../../version.php"));
如果上面的命令返回false,那么您最喜欢将文件路径错误。