首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Recive响应内容必须是实现__toString()的字符串或对象,"boolean“是我调用phpinfo()时给定的。

Recive响应内容必须是实现__toString()的字符串或对象,"boolean“是我调用phpinfo()时给定的。
EN

Stack Overflow用户
提问于 2018-07-07 04:47:55
回答 1查看 2.3K关注 0票数 1

当尝试调用phpinfo()函数时,Laravel返回以下错误:

响应内容必须是实现__toString()的字符串或对象,给定的"boolean“。

代码是:

代码语言:javascript
复制
Route::get('phpinfo', function () {
    return phpinfo();
});

Laravel的版本是5.6

编辑:

当我使用

代码语言:javascript
复制
Route::get('phpinfo', function () {
    return utf8_encode(phpinfo());
});

页面呈现得很好,但我担心这可能会在未来给我带来问题。在呈现phpinfo页面时会不会有什么问题呢?我是否在不想的情况下触摸了PhpStorm中的某些东西?

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

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

我希望有人能帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-07 07:39:42

正如消息所述,路由器需要一个返回字符串值的函数,或者至少是一个实现了__toString的对象,以便可以将其转换为字符串值。

phpinfo不返回字符串值-您看到的结果直接写入输出流,并且它返回true或false。

使用return utf8_encode(phpinfo());,您可以“修复”这个问题,因为函数现在有一个实际的字符串返回值。phpinfo输出仍然被立即写入到输出流中,但是您现在使用utf8对其返回值true进行编码,该返回值将首先隐式地转换为1,以便最终将其作为字符串值返回。但这可能会让您在某个地方输出1……

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

因为phpinfo直接写入输出流,所以这仍然可能在以后导致问题-所以这里的“干净”解决方案可能是首先使用输出缓冲来捕获phpinfo输出,然后返回缓冲区内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51217418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档