该问题的原因同该问题的解决一样简单!
让我们先看看出问题的地方:index.php和BBS.php和tasteCookie.php
这三个文件本本身没啥问题,只是他们的位置的安排出现了bug:
其实,完整的我站文件目录树是这样的:
<根目录>/[-] ━📖application[-]━📖db_api[-]━━📝db.php//数据库连接api
│ ┝━━━📝BBS.php//论坛页面
┊ ┝━━━📝submit_post.php//提交帖子api
┊ ┝━━━📝view_post.php//查看帖子详情页面
┊ ┝━━━📝sign-in-up.php//登录注册api
┊ ┝━━━📝YummyCookie.php//用户cookie库,含设置、检
┊ ┊ 查用户cookie的功能代码
┊ ┕━━━📝tasteCookie.php//主页识别用户信息脚本
┝━━━📖data[-]……
┝━━━📖v0.2
│ ┝━━━📝sign-in-up.html//登陆前端页
│ ┝━━━📝editor.html//发帖前端
│ ┝━━━📝viewer.php//看帖前端
│ ┕━━━📝index.php//主页前端
┝━━━📖v0.1━━…….//v0.1的文件
┕━━━📝index.html//这才是真正的codecraft的主页文件,里面有所以版本的链接
其中,index.php嵌套了/application/db_api/下的BBS.php和tasteCookie.php
注意
为了方便编辑db脚本,我们选择了把applicaion文件夹放在根目录下面,这样就不用每个版本的目录里都有一个application文件夹了。
所以
BBS.php和tasteCookie.php位于<根目录>/application/db_api/…
index.php的绝对路径位于<根目录>/v0.2/index.php
但是!
index.php的嵌套使用<iframe>元素,(这样可控边距和样式)
就需要嵌套到
index.php上一级目录并进入application/db_api/目录才能嵌套到,这时就出问题了:网页无法嵌套/访问其上一级目录下的其他网页,
-究其原因其实是XX云为了防止用户网站嵌套到服务器根目录而设置了文件访问权限😡-
这样文件嵌套不到,就导致了http2Error
总结一下就是由于开发团队为了方便编辑db_api下的脚本、节省版本空间,于是把application整个移到根目录下面了,导致触发了XX云服务器的被动技能:【文件访问权限限制】,返回了http2ERROR。
我们如何解决的?
这个问题的解决同它的产生一样简单:我们把application放到/v0.2目录下,这样application文件夹与index.php就处于同一目录下了,就不会产生权限问题啦😏😀
心得
此次bug是codecraft建站一来最严重的一次bug,原因只是团队对服务器环境的疏忽和一时操作没考虑后果。这也给我们团队在今后的开发中要时时注意bug的产生:
谁知道是不是你变了个路径/移动了一下文件夹/Ctrl-X+Ctrl-V之后的结果呢?