Bug(バグ) #1383
#1183 の対応では cache/nobody のキャッシュ削除ができない
100%
説明
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" にするようにしました。
関連するチケット
関係しているリビジョン
fixed opApplicationConfiguration::setCacheDir() doesn't remove cache file (fixes #1383)
removed unnecessary lines in opApplicationConfiguration about the cache (fixes #1383)
履歴
#1 Shogo Kawahara がほぼ14年前に更新
- 対象バージョン を OpenPNE 3.7.0 にセット
#2 Shogo Kawahara が13年以上前に更新
現状の問題点など洗い出し
- ユーザごとにキャッシュディレクトリを分けているが、パーミッションが "755" であるため、キャッシュの削除やOpenPNE自体の削除に支障が出ている
#3 Shogo Kawahara が13年以上前に更新
- 担当者 を Shogo Kawahara にセット
#4 Shogo Kawahara が13年以上前に更新
- ステータス を Pending Fixing(修正待ち) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 7a6ec89888124939959d8a2e13b2b37f5ea3aa06 で適用されました。
#5 Shogo Kawahara が13年以上前に更新
(バックポートはレビューまで待ってください)
#6 Rimpei Ogawa が13年以上前に更新
- 3.6 で発生するか を Yes にセット
#7 Rimpei Ogawa が13年以上前に更新
- 優先度 を Urgent(急いで) から High(高め) に変更
#8 Kousuke Ebihara が13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
- 544 行目の is_dir() によるチェックの意図と、 547 行目の sfFilesystem::mkdirs() の意図が不明です。 544 行目の if 文を通るなら sfFilesystem::mkdirs() の mkdir() 関数は呼ばれないことになり、 sfFilesystem::mkdirs() のコールが意味のないものになっています
- 基本的にはこれで問題なさそうですが、 chmod() を毎リクエスト時に実行してしまっているのはなんとかならないものでしょうか? fileperms() の結果は PHP 側でキャッシュされるので、事前にこの関数によるチェックをするわけにはいかないでしょうか?
#9 Shogo Kawahara が13年以上前に更新
- ステータス を Rejected(差し戻し) から Accepted(着手) に変更
#10 Shogo Kawahara が13年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
更新履歴 56db4c0b017d58cbb489ceffe31535a01178b773 で適用されました。
#11 Shogo Kawahara が13年以上前に更新
commit: 56db4c0b017d の解説¶
この修正は、ディレクトリ作成の処理を削除していますが以下の理由です。
- ディレクトリ作成は sfCacheFile で適切なパーミッション (0777) で作成されるようになっている。
#12 Kousuke Ebihara が13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
#13 Kousuke Ebihara が13年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
- 進捗率 を 70 から 50 に変更
#14 Rimpei Ogawa が13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
sfConfig::set('sf_cache_dir', $newCacheDir);も不要ですが、別チケットで扱います。
#15 Rimpei Ogawa が13年以上前に更新
#1598 でチケットを作成しました。
#16 Fumie Toyooka が12年以上前に更新
- ファイル スクリーンショット_2011-10-24_18.09.52.png を追加
#17 Fumie Toyooka が12年以上前に更新
- ファイル を削除 (
スクリーンショット_2011-10-24_18.09.52.png)
#18 Fumie Toyooka が12年以上前に更新
間違えました。
#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で発生するか」の項目が勝手に変更されてたので元に戻しました。