2016-04-25 12 views
2

私は、Web(www-データ)またはcronスクリプト(cronユーザーによって実行)を介してアクションが実行される標準のMagentoアプリケーションを使用しています。デフォルトでMagentoはchmod 0640でログファイルを作成するので、問題が発生します。例外/システムを最初にログに記録するもの(www-データまたはcron)は、もう一方は追加できません。したがって、ウェブ上で例外が発生した場合、var/log/exception.logはwww-dataを所有者として作成され、cronスクリプトは同じファイルに例外を記録することができません(cronとwww-dataはたとえ同じグループであっても、助けにならないだろう)。Magentoログファイルのアクセス許可の問題

考えられる解決策:同じWWW-データユーザとの 1.実行するcron 2.変更Mage.phpがより適切なchmodコマンドでログファイルを生成する(システム管理者がびくともしないだろう、解決策に同意しません) (おそらく777かもしれない)。これはMagentoコアファイル(Mage.php)を変更することを意味し、ライセンスでは許可されていません。

メイジクラスは最終的なもので、ログイン後にpre/postイベントがなく、pre/postフックでchmodを変更することができます。

誰も同じ問題が発生しましたか、これを適切に処理する方法についてアドバイスがありますか?

答えて

0

提案された最初のソリューションは、私にとって有効なものとして鳴ります。 cronjobはwww-dataユーザーで実行する必要があります。その後、Webサーバーまたはcronジョブに関係なく、ファイルのアクセス許可が一致することを保証できます。

そうでなければ、どのようにしてcronjobを別のユーザーとして実行すると、Webサーバーが同じ結果をもたらすことが保証できますか?

Mage.phpを変更することは、すでに述べたように正しい解決策ではありません。 Magento - eをアップデートするときに問題に遭遇するように、コアファイルを直接変更しないでください。 g。ファイルを上書きする。

0

私の考えから、Webユーザーはシェル/ cronジョブユーザーと同じユーザーであってはいけません。彼らは同じグループを使うことができますが、異なるユーザーはより安全です。我々の場合のWeb/HTTP-ユーザーで

は次のとおりです。

  • のhttpd:サイト

およびシェル/ cronのユーザーは、次のとおりです。

  • PROD:サイト

ユーザーは異なるが、同じグループに属している。我々の場合、ログ許可640はあまりにも制限的です。

その私たちは、sの簡単なスクリプトで0640から0660へのスクリプトでのcronシェルとwgetの

によって実行される

$command = 'find '.realpath(dirname(__FILE__)).'/var/log/ -type f -exec chmod 0660 {} +'; 
exec ($command); 

それらを変更Mage.php

chmod($logFile, 0640); 

を行って

関連する問題