在有限的托管环境中使用刀片模板

时间:2017-10-19 15:02:13

标签: php wordpress laravel blade templating

我正在开发一个针对自定义wordpress网站使用刀片模板的项目。该网站托管在wpengine上 - 它有很多限制,可以防止创建文件/写入文件,这是刀片模板引擎所需要的,无需命令行访问等。

我部署新功能的临时措施只是将缓存文件从我的本地环境ftp到服务器,但这样做会导致以下错误,忽略服务器上的缓存文件并尝试不再存在的引用缓存文件:

  

警告:   file_put_contents(/ NAS /内容/现场/ mypath中/可湿性粉剂内容/插件/ pluginname /班/控制器/../../的意见/缓存/ e44b26a14bd95cd0cdf764d863a0b4bd1848c8ba.php):   无法打开流:权限被拒绝   第33行/opt/nas/www/common/production/php_prevent_flock.php

     

警告:   包括(/ NAS /内容/现场/ mypath中/可湿性粉剂内容/插件/ pluginname /班/控制器/../../的意见/缓存/ e44b26a14bd95cd0cdf764d863a0b4bd1848c8ba.php):   无法打开流:没有这样的文件或目录   /nas/content/live/mypath/wp-content/plugins/pluginname/vendor/illuminate/view/Engines/PhpEngine.php   在第43行

     

警告:include():打开失败   '/nas/content/live/mypath/wp-content/plugins/pluginname/Classes/Controllers/../../views/cache/e44b26a14bd95cd0cdf764d863a0b4bd1848c8ba.php'   包含(include_path ='。:/ usr / share / php')in   /nas/content/live/mypath/wp-content/plugins/pluginname/vendor/illuminate/view/Engines/PhpEngine.php   在第43行

注意,我无权访问:/opt/nas/www/common/production/php_prevent_flock.php

想知道为什么刀片服务器要引用旧的缓存文件?我怎么能阻止这个?尽管存在wpengine限制,是否有更简单的方法来部署新的刀片模板?

2 个答案:

答案 0 :(得分:3)

我也遇到这个问题,解决方法非常简单,只需更改缓存文件夹的路径,并保持其路径为

  

/ tmp / cache

这是因为Wpengine允许将缓存存储在应放置在根目录下的tmp文件夹中

答案 1 :(得分:0)

您的问题很可能与您的FTP客户端在上传文件时更改文件的修改日期/时间有关。 可以选择在您的设置中保留上传时的原始修改日期/时间值。

视图编译器将Blade模板的修改日期/时间与相应的缓存/编译版本进行比较。如果Blade模板较新,它将重新编译并重新缓存该文件。

请参阅此处了解正在运行的具体代码:here

为了更持久地解决您的问题,我可以考虑一些选择。

1)。将视图缓存路径更改为/tmp目录。如果您的服务器允许上传文件,那么它们就会被写入某处。最有可能/tmp。如果覆盖缓存路径,则可以在那里存储已编译的视图。

2)。暂时或永久禁用视图缓存。这将影响性能,因为您的视图将根据每个请求进行编译。但这是一种解决方法。有关详情,请参阅此帖子:https://github.com/laravel/framework/blob/5.5/src/Illuminate/View/Compilers/Compiler.php#L60

3)。搬到更好的主人。