Receive The Response content must be a string or object implementing __toString(), "boolean" 当我调用 phpinfo()

Recive The Response content must be a string or object implementing __toString(), "boolean" given when i call phpinfo()

当尝试调用 phpinfo() 函数时,Laravel return 我这个错误:

The Response content must be a string or object implementing __toString(), "boolean" given.

密码是:

Route::get('phpinfo', function () {
    return phpinfo();
});

Laravel的版本是5.6

编辑:

当我使用

Route::get('phpinfo', function () {
    return utf8_encode(phpinfo());
});

页面呈现良好,但我担心这可能会在未来给我带来问题。 phpinfo 页面的呈现是否准时?我是否在我的 PhpStorm 中无意中触动了某些东西?

Laravel 是新安装的,指向 / 的路由运行良好并正确呈现 html 但我也担心这个:

以红色突出显示的面包屑似乎呈现了奇怪的字符。

希望有人能帮助我。

正如消息所说,路由器需要一个 return 字符串值的函数,或者至少是一个已实现 __toString 的对象,以便它可以转换为字符串值。

phpinfo 不是 return 字符串值 - 您 看到的结果 直接写入输出流,它 returns 判断对错。

使用 return utf8_encode(phpinfo()); 你是 "fixing" 问题所在,因为函数现在有一个实际的字符串 return 值。 phpinfo 输出仍然立即写入输出流,但您现在对其 return 值 true 进行 UTF8 编码,这将首先隐式转换为 1,以便最终整个return 是一个字符串值。但这可能会让你在某处输出 1 ...

所以你应该先调用 phpinfo,然后再 return 一个空字符串。

因为 phpinfo 直接写入输出流,这仍然可能在以后引起问题 - 所以这里的 "clean" 解决方案可能是使用 输出缓冲 首先捕获 phpinfo 输出,然后 return 缓冲区内容。