Closed tt-sevth closed 4 years ago
我这边是没有这个bug的,是不是你的配置有什么问题?建议更新最新代码,再备份一下config-local.php
,然后使用最新代码的config.php
文件复制一份为config-local.php
,再把前面备份的老config-local.php
手动搬到新config-local.php
上。
如果你是用web版配置的,可以试试去config/.settings
里删除一下配置再重新配置(删除前先备份一下,以防要找参数)。
因为$settings['storageTypes']
中,很明显storageTypes
是字符串,它报错是说使用了布尔类型的值作为键去访问数组,可是storageTypes
不可能是布尔型呀,我也是用brew能安装到的最新的php7.4.3测,没有问题呀,我用了error_reporting(E_ALL);
设置都不报这个notice。
我也觉得这个问题很奇怪,在今天凌晨的时候拉取的最新代码,然后是直接修改的config-local.php
文件。
经过我的一些简单测试,这个存在于右键上传和AIfred
上传的时候会出现这个问题。如果直接搭配typora
是不会出现这个提示的。(有空我再排查一下)
tips: 感谢作者大大的付出,
star
为敬。
@sevth-developer 感谢star!那就麻烦你有空排查一下出现这个问题的原因,因为你加个is_array()判断只是让错误不发生,但为什么会有这个错误还是不清楚。
@sevth-developer 我可能知道原因了,你用的图床是不是google drive / dropbox / onedrive / imgur 中的一种?有没有试过其它图床?
@xiebruce 没有呀,我用的是 Ucloud的对象存储。
@xiebruce 而且是只配置了这一个,其他的都没有动过。
@sevth-developer 可以麻烦帮忙调试一下吗?或者如果你调试不出来,我可以远程调一下,因为我这边没报这个错,如果需要远程帮助的话,我现在刚好有空,可以把Teamviewer账号密码直接在这里回复我,我连接上后,马上删除掉就行。
@xiebruce 最近在写别的东西,没注意看消息,因为暂时只有我这有问题,但是不影响使用,不急的。我自己会尝试调试一下叭,查不出来问题我再联系您。感谢!
@sevth-developer 好的!
我想我可能找到问题的原因了,今天用 phpstorm
断点调试了一下,结果如下:
其中 SettingController
控制器被多次调用,第一次为读取配置文件,使用 require_once
取到了文件,后面进行历史记录存储读取配置时,此时require_once
返回值为 true
,所以在$this->storageTypes = $settings['storageTypes']
这里会出现提示。
解决办法:
$setting
类型判断(提交的pr就是这么做的)require_once
改为 require
经过测试没有问题。不知道这个情况在其他的
PHP
版本是否存在 :D
感谢帮忙找出问题,确实是像你说的这样,在其它版本php应该也会有这个问题,比如我7.3,我用if($settings===true)
来判断,确实有两次进入了if,打印出来是true。
那我就把require_once改为require吧,否则当不使用网页版时,数据库配置就会获取不到(使用网页版配置时会读json配置文件所以不会有问题),所以我就不用你这个pr了,你更新一下代码即可!
好的!
fix bug on php 7.4
在我的 Mac 10.14.6上,通过brew安装php默认为最新版本,上传文件时,会触发
php
的一个notice
定位文件位置
/PicUploader/settings/SettingController.php Line 33
改动如下:
其实就本身这个提示来说不是什么大问题,但是在自动粘贴的时候会附带两条这样的提示信息,影响使用。