windows服务器更新主题/插件提示“更新失败 HTTP 500”错误的解决方案
最近不是更新了【李洋博客APP】客户端吗,但是有人在插件后台更新主题/插件的时候提示“更新失败:HTTP 500”,我最开始以为是我的代码写错了,搞了好久都没有头绪,后台开启了调试模式,把错误代码:
[Error] (2) : is_dir(): open_basedir restriction in effect. File( C:/wwwroot/zblog.app/zb_users/theme/simplee/*.code-workspace ) is not within the allowed path(s): ( C:/wwwroot/zblog.app/; C:/Windows/Temp/; C:/Temp/; C:/BtSoft/temp/session/ ) (set_error_handler) (1.7.5.3540 (Optimus) )
问题原因
代码尝试用 is_dir() 检查包含通配符的路径 *.code-workspace,但 PHP 的 open_basedir 限制不允许这种路径格式。涉及是zblog程序的官方文件:zb_system/function/lib/app.php 第 646 行,当然我们不能去修改官方文件,本质原因也不在这,如图,更新失败。

错误提示的相关界面,只是我很好奇*.code-workspace 是什么? 网站根目录下不应该也没有这个文件啊,还有可能是你本地的代码编辑器(比如 Visual Studio Code)在项目文件夹中自动生成的工作区配置残留-1-3-13。is_dir(C:/wwwroot/zblog.app/zb_users/theme/simplee/*.code-workspace) 这行代码尝试把带通配符 * 的路径当成目录去判断,这本身就是一个不正确的操作,所以一直失败-1。

解决方案
首页登录宝塔服务器,左侧菜单【网站】在弹出的界面,找到【网站目录】,关闭【防跨站攻击】,如图:

系统提示设置成功,然后返回博客插件后台重新刷新页面,更新主题/插件,你就会发现更新成功啦。

我在网上也查找了相关问题,但是都没有成功解决,只有关闭 open_basedir 也就是【防跨站攻击】才能解决,另外就是仅限wndows服务环境下,Linux没有任何问题,所以如果出现此问题的朋友请尝试关闭【防跨站攻击】或者干脆更换Linux系统,毕竟现在的可操作性面板很多,就算是小白也能清晰的操作。不是说关闭了就会被攻击哈,没有的事,只是闭后失去了一段防线防跨站攻击保护而已。
终极方案更新插件
最后的最后,如果你不想关闭【防跨站攻击】又想在线更新主题,那就更新插件吧,哈哈哈~~~为什么写在最后呢?防止你走神不看全文章呗。传送门地址:https://www.itlaoli.com/blog/907.html,去吧,更新去吧,这回解决了不少小问题,用户体验直接堆满,好了,有问题留言反馈,我再去看看有没有其他的解决方案。



还没有评论,来说两句吧...