プロジェクト

全般

プロフィール

Bug(バグ) #1383

#1183 の対応では cache/nobody のキャッシュ削除ができない

Shogo Kawahara13年以上前に追加. 8年以上前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2010-07-22
期日:
進捗率:

100%

3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Unknown (未調査)

説明

Overview (概要)

#1183 で cache/nobody のキャッシュ削除が出来ない問題の対処を行ないましたが、
symfony cc での削除ができません。

"cache/nobody" that it's permission is "700" can't be deleted by "./symfony cc".

Causes (原因)

  • postfixによって作られた、cache/nobody のパーミッションが 700 であるためです。
  • Windowsかどうかを判定する式が正しくありません

lib/config/opApplicationConfiguration.class.php L548

if ('\\' === DIRECTORY_SEPARATOR)  // Windows

  • パーミッションが0777でないかで判定した場合、apacheプロセスが作成する cache/apache が削除されてしまいます。

lib/config/opApplicationConfiguration.class.php L551

if ('0777' !== $permission)

なお、Linux上で動作させた場合は #1183 対処前と同様の挙動となるでしょう。

Way to fix (修正方法)

キャッシュの削除や、OpenPNE3自体の削除に支障が出ていることは致命的な問題と言えるので、キャッシュディレクトリ(ユーザ)ごとのパーミッションを"0777" にするようにしました。


関連するチケット

関連している OpenPNE 3 - Backport(バックポート) #1415: #1183 の対応では cache/nobody のキャッシュ削除ができない Fixed(完了) 2010-07-22
関連している OpenPNE 3 - Bug(バグ) #1598: opApplicationConfiguration::setCacheDir() に不要な処理が残っている Fixed(完了) 2010-09-17
関連している OpenPNE 3 - Backport(バックポート) #1659: #1183 の対応では cache/nobody のキャッシュ削除ができない Fixed(完了) 2010-07-22

関係しているリビジョン

リビジョン 7a6ec898 (差分)
Shogo Kawahara13年以上前に追加

fixed opApplicationConfiguration::setCacheDir() doesn't remove cache file (fixes #1383)

リビジョン 56db4c0b (差分)
Shogo Kawahara13年以上前に追加

removed unnecessary lines in opApplicationConfiguration about the cache (fixes #1383)

履歴

#1 Shogo Kawahara13年以上前に更新

  • 対象バージョンOpenPNE 3.7.0 にセット

#2 Shogo Kawahara13年以上前に更新

現状の問題点など洗い出し

  • ユーザごとにキャッシュディレクトリを分けているが、パーミッションが "755" であるため、キャッシュの削除やOpenPNE自体の削除に支障が出ている

#3 Shogo Kawahara13年以上前に更新

  • 担当者Shogo Kawahara にセット

#4 Shogo Kawahara13年以上前に更新

  • ステータスPending Fixing(修正待ち) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 7a6ec89888124939959d8a2e13b2b37f5ea3aa06 で適用されました。

#5 Shogo Kawahara13年以上前に更新

(バックポートはレビューまで待ってください)

#6 Rimpei Ogawa13年以上前に更新

  • 3.6 で発生するかYes にセット

#7 Rimpei Ogawa13年以上前に更新

  • 優先度Urgent(急いで) から High(高め) に変更

#8 Kousuke Ebihara13年以上前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更
  • 544 行目の is_dir() によるチェックの意図と、 547 行目の sfFilesystem::mkdirs() の意図が不明です。 544 行目の if 文を通るなら sfFilesystem::mkdirs() の mkdir() 関数は呼ばれないことになり、 sfFilesystem::mkdirs() のコールが意味のないものになっています
  • 基本的にはこれで問題なさそうですが、 chmod() を毎リクエスト時に実行してしまっているのはなんとかならないものでしょうか? fileperms() の結果は PHP 側でキャッシュされるので、事前にこの関数によるチェックをするわけにはいかないでしょうか?

#9 Shogo Kawahara13年以上前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更

#10 Shogo Kawahara13年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更

更新履歴 56db4c0b017d58cbb489ceffe31535a01178b773 で適用されました。

#11 Shogo Kawahara13年以上前に更新

commit: 56db4c0b017d の解説

この修正は、ディレクトリ作成の処理を削除していますが以下の理由です。

  • ディレクトリ作成は sfCacheFile で適切なパーミッション (0777) で作成されるようになっている。

#12 Kousuke Ebihara13年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#13 Kousuke Ebihara13年以上前に更新

  • ステータスPending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
  • 進捗率70 から 50 に変更

#14 Rimpei Ogawa13年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更
sfConfig::set('sf_cache_dir', $newCacheDir);
も不要ですが、別チケットで扱います。

#15 Rimpei Ogawa13年以上前に更新

#1598 でチケットを作成しました。

#16 Fumie Toyooka12年以上前に更新

  • ファイル スクリーンショット_2011-10-24_18.09.52.png を追加

#17 Fumie Toyooka12年以上前に更新

  • ファイル を削除 (スクリーンショット_2011-10-24_18.09.52.png)

#18 Fumie Toyooka12年以上前に更新

間違えました。

#19 Shouta Kashiwagi約12年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更
  • 3.6 で発生するかYes から Unknown (未調査) に変更
  • 3.4 で発生するかUnknown (未調査) にセット

テストOKです。

#20 Shouta Kashiwagi約12年前に更新

  • 3.6 で発生するかUnknown (未調査) から Yes (はい) に変更

なぜか「3.6で発生するか」の項目が勝手に変更されてたので元に戻しました。

#21 kaoru n8年以上前に更新

  • 3.8 で発生するかUnknown (未調査) にセット

他の形式にエクスポート: Atom PDF