2020.08.24
4419
wng_png
version 6.0.0RC3
服务器:window10 mysql8.0.12 php PHP 7.3.4
file:vendor\topthink\think-cache\src\cache\Driver.php
line:242
错误原因:Argument 1 passed to think\cache\Driver::unserialize() must be of the type string, bool given, called in vendor\topthink\think-cache\src\cache\driver\File.php on line 126
研究了一下原因:
因为vendor\topthink\think-cache\src\cache\driver\File.php 第98行 public function get()方法中第108行:$content = file_get_contents($filename)读取到缓存文件的内容为空(可能是由于服务器IO性能引起的文件的共享冲突导致的,也就是同时打开同一个文件)时,第120行:$content = substr($content, 32); substr函数返回了boolean false,导致vendor\topthink\think-cache\src\cache\Driver.php 243行:protected function unserialize(string $data) 方法出错,因为该方法的参数只接受string类型。临时解决办法就是循环读取缓存文件,一直读取到内容为止。即把 $content = file_get_contents($filename)改成: