laravel-admin用dingo/api报sha1() expects parameter 1 to be str
有个项目,用宝塔搭建环境一切正常,但是在docker 容器中报
sha1() expects parameter 1 to be string, object given
错误;对比composer 扩展,版本号完全一样。尝试把出现问题的代码放到宝塔搭建的环境内,也可以正常访问。
环境
镜像系统: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 协议》,转载必须注明作者和本文链接
已解决
问题答案其实 laravel-admin issue里面也有,我一开始也看了,但是我按照他做的没有效果。经过仔细排查发现原因是kebuSphere 在容器内设置了环境变量(API_DOMAIN)和dingo/api的config/api.php env('API_DOMIAN') 冲突了,导致后台页面也走了dingo/api的逻辑!
总结
dingo/api 的domian配置不能和后台设置一致,会导致前后台混淆!
遇到同样的问题,前来支持,感谢感谢。然后如何修改解决呢??
非常感谢,同样的问题