作者: kideny 访问次数: 242 创建时间: 2022-10-16 16:00:14 更新时间: 2024-03-30 00:01:57
这两天遇到一个很恶心的问题,花了我很久才排查出真正的原因。就是项目的框架从Phalcon4.1升级为Phalcon5以后,打开首页出现File not found的报错,报错代码404。
一开始一直以为是Caddy2的问题
由于打开首页就报错404,文件没找到。所以,我以为是框架升级以后,路由变动导致找不到文件。我一直在改Caddy2的配置文件,Caddy2的配置文件在Phalcon4下面是好好的,不应该会存在问题的。不停的修改php-fpm代理的语句,还有伪静态的规则,结果自然是没有办法解决任何问题的。我在Phalcon4下面使用的伪静态规则,就是把路由交给框架来处理了。所以,如果找不到文件,其实不是Caddy2的问题了,就是框架本身的问题。
项目代码任何php文件都无法打印任何信息
这个问题最恶心的就是,当你使用类库提供的dd命令打印任何php的报错信息,都不会给你打印任何报错信息。所以,虽然知道是框架的问题,但是你真的很难排查,简直就是无头的苍蝇啊。
相当于你面临一起恶性案件的时候,没有任何线索。
突发奇想终于找到问题所在
就在我一筹莫展之际,我开始排查项目各个目录的权限。我拿新服务器的文件权限,和老的稳定运行的文件权限挨个对比。把权限一一改正之后,首页终于出现在我面前。404的问题,终于解决了。
实际上就是我用来缓存静态文件的目录,权限不对导致的。在我的项目里,这个目录是自定义的。Phalcon框架就是这样一个框架,很多东西需要自己定义。
我是把项目的静态文件缓存到/cache/volt目录,这个目录由于缺乏权限,导致用户不可读。所以造成所有页面都404,而且没有任何报错的问题。
模板文件的缓存路劲,权限应该自动设置为777
默认文件的缓存路径,是有项目的代码来设置的。在官方的文档里,Phalcon5已经添加了类似的案例代码,地址在https://docs.phalcon.io/5.0/en/volt。
cache目录需要把权限设置为777,这样就不需要手动去服务器设置了。
总结
至此这个问题,就彻底搞清楚了。由于服务器的模板文件缓存路径的权限设置不对,导致的错误。
还有一个办法,就是通过git同步这个目录。如果你的开发环境是类unix系统,这个权限也是会自动同步的。如果是像我这样的windows下开发,那就只能改代码了。
语言: zh-CN
翻译人员:
原作者:
转载地址:
源网址:
版权: 本站所有内容, 版权归原作者所有。发表原创内容将会获得现金奖励, 并且随着时间倍数增长, 请了解我们的内容奖励计划。