我们有很多silverstripe安装 - 每个安装在自己的vServer上。
部署由部署服务完成。
每个实例都由nginx
和php5.6-fpm
提供支持。
部署运行时,部署服务会将典型的build/flush
操作作为ssh命令执行。
cli
任务由php5.6-fpm
正在运行的同一用户运行。
但是php-Versions不完全相同(fpm+cli
)
这导致2个不同的缓存目录
/tmp/silverstripe-cache-php5.6.23... (fpm)
和
/tmp/silverstripe-cache-php5.6.29... (cli)
这真的很糟糕。例:
有一个新的静态类变量存储在ConfigManifest
中。
但它只存储在与cli版本匹配的缓存目录的清单中。
最糟糕的情况:浏览网站时(php5.6-fpm
用法)此配置变量未知。这可能会导致server errors (500)
,因为fpm的清单不知道新的配置类变量。
知道如何解决这个问题吗?
亲切的问候,罗伯特
答案 0 :(得分:3)
混合稍微不同的php版本的唯一方法是在项目的根目录中使用临时文件夹。
dotnet razor-precompile
文件夹silverstripe-cache
文件中添加putenv('APACHE_RUN_USER=php-fpm');
以强制缓存文件夹的名称为' php-fpm' 请参阅framework \ core \ TempPath.php获取逻辑。