laravel-admin用dingo/api报sha1() expects parameter 1 to be str

有个项目,用宝塔搭建环境一切正常,但是在docker 容器中报

sha1() expects parameter 1 to be string, object given

错误;对比composer 扩展,版本号完全一样。尝试把出现问题的代码放到宝塔搭建的环境内,也可以正常访问。
laravel admin 使用 dingo/api 报sha1() expects parameter 1 to be string, object given

环境

镜像系统:alpine:3.12
php:7.2.33
mysql:5.7
laravel:5.5.50
dingo/api:2.2.4
文件系统是挂载的nfs
/var/www/html # php -m
[PHP Modules]
apc
apcu
bcmath
Core
ctype
curl
date
dom
fileinfo
filter
ftp
gd
hash
iconv
igbinary
imagick
json
libxml
mbstring
mcrypt
memcached
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
protobuf
readline
redis
Reflection
session
SimpleXML
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
xxtea
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

请大佬帮忙看看是什么原因导致的!

临时解决办法:
目前发现可以在laravel-admin 内的vendor/encore/laravel-admin/src/Layout/Content.php 添加
__toString() 解决,但是没有找到什么原因导致的问题,而且修改vendor 会被升级覆盖

  /**
 * Render this content. * * @return string
 */  
 public function render()
 { 
  $items = [
  'header' => $this->header,
  'description' => $this->description,
  'breadcrumb' => $this->breadcrumb,
  'content' => $this->build(),
  ];
 return view('admin::content', $items)->render();
  }
//    临时 解决
  public function __toString(){
      return $this->render();
  }
本作品采用《CC 协议》,转载必须注明作者和本文链接
附言 1  ·  2年前

已解决

问题答案其实 laravel-admin issue里面也有,我一开始也看了,但是我按照他做的没有效果。经过仔细排查发现原因是kebuSphere 在容器内设置了环境变量(API_DOMAIN)和dingo/api的config/api.php env('API_DOMIAN') 冲突了,导致后台页面也走了dingo/api的逻辑!

总结

dingo/api 的domian配置不能和后台设置一致,会导致前后台混淆!

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

遇到同样的问题,前来支持,感谢感谢。然后如何修改解决呢??

2年前 评论

非常感谢,同样的问题

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!