2017-01-10 9 views
0

私たちは、それぞれ独自のvServer上にSilverstripeインストールをたくさん用意しています。 展開は展開サービスによって行われます。 各インスタンスの電源は、nginxphp5.6-fpmです。Silverstripe TEMP_FOLDERはfpmとcliとで異なります

展開が実行されている場合、通常のbuild/flushアクションは展開サービスによってsshコマンドとして実行されます。

cliのタスクは、php5.6-fpmのように同じユーザーが実行します。

しかし、PHP-バージョンが一致しない(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のマニフェストが新しいconfigクラス変数を知らないためです。

これを修正する方法はありますか?

敬具、ロバート

+0

cliとfpmのユーザーとPHPのバージョンが同じであることを確認してください。 – wmk

+0

@wmk - これは難しい作業です – derRobert

+0

なぜですか?あなたはマシンにインストールされていて、 'sudo'を使うことができます... – wmk

答えて

3

若干異なるPHPのバージョンを混在させる唯一の方法は、プロジェクトのルートに一時フォルダを使用することです。

  1. への書き込みアクセスを確保するために、システム構成でのPHP-FPM "
  2. するキャッシュフォルダの名前を強制するために、あなたの_ss_environment.phpファイルにputenv('APACHE_RUN_USER=php-fpm');を追加
  3. プロジェクトのルートフォルダにsilverstripe-cacheフォルダを作成php-fpmとcliの 'silverstripe-cache/php-fpm'フォルダ。

ロジックについては、framework \ core \ TempPath.phpを参照してください。

+0

これはうまくいきます...ありがとう – derRobert

関連する問題