Silverstripe TEMP_FOLDER因fpm和cli而异

时间:2017-01-10 07:11:22

标签: php nginx silverstripe

我们有很多silverstripe安装 - 每个安装在自己的vServer上。 部署由部署服务完成。 每个实例都由nginxphp5.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的清单不知道新的配置类变量。

知道如何解决这个问题吗?

亲切的问候,罗伯特

1 个答案:

答案 0 :(得分:3)

混合稍微不同的php版本的唯一方法是在项目的根目录中使用临时文件夹。

  1. 在项目根文件夹中创建dotnet razor-precompile文件夹
  2. silverstripe-cache文件中添加putenv('APACHE_RUN_USER=php-fpm');以强制缓存文件夹的名称为' php-fpm'
  3. 系统配置是为了确保对&silverstripe-cache / php-fpm'来自php-fpm和cli的文件夹。
  4. 请参阅framework \ core \ TempPath.php获取逻辑。