【tp5部署】【Linux环境】缓存问题导致,修改‘view_replace_str‘参数配置无效

问题引入

最近在云服务器上部署tp5项目。由于将项目从Win10移植到Linux上,需要修改某些地方。其中就包括:视图输出字符串'view_replace_str'。

权限问题也是比较常见,之前写过博客了,在这里就不赘述了。本博客,讲述两个问题:

1、Linux环境下如何修改'view_replace_str'

2、修改后'view_replace_str',不生效

1、Linux环境下如何修改'view_replace_str'

正确配置:

// 视图输出字符串内容替换
    'view_replace_str'       => [
        '__admin__' => '/static/assets',
        '__index__' => '/static/index'
    ]

为啥这样写?应该都知道 “/” 在 Linux 中表示 “根目录”,但是此处 最前面的 “/” 显然并不代表 整个系统的根目录。那指代啥?指代的应该是:当前项目的虚拟目录路径

tp5的入口文件index.php的默认位置是在public目录下。当然,你也可以把它转移到项目的根目录下(并不建议这么做)。如果,入口文件index.php在public目录下,那么,项目的虚拟目录应该直接指向public目录!

我的项目就是上述情况,所以上述截图的 “/” 就指代:public目录!

有人可能会问:能不能写成 “static/assets”?有兴趣的可以去测试一下,我觉得应该是不行的。

2、修改后'view_replace_str',不生效

由于测试,我修改过几次view_replace_str,但发现修改并不生效。view_replace_str错误,导致了,尽管页面能访问,但是静态资源路径错误,所以静态资源加载不出来。

这个问题困扰了我很久,在反复测试后,我怀疑应该是tp5的缓存问题,于是找到了以下博客:

https://blog.csdn.net/sinat_41274057/article/details/100658809

测试发现,确实是因为缓存问题,上述博客的方法确实可行。但问题是,我们不应该直接改动框架代码!那么tp5是否提供了相关的配置参数供我们启用和禁用模板缓存呢?

可惜,在tp5的官方文档中并没有找到。但查阅源码,可以很清楚地发现,是有的!

thinkphp\library\think\Template.php

看见上面 $config 的参数名,是不是很熟悉? 因为 在config.php 中见过。

所以,如果我们想要通过配置参数去,禁用 模板缓存,解决 view_replace_str 修改无效的问题,只需增加以下参数

在与老师交流的过程中,老师说可以试试清除runtime下的缓存试试。但我没试过,因为上面的解决方案生效了,我就没试。

猜你喜欢

转载自blog.csdn.net/qq_43290318/article/details/107218094