Bug(バグ) #3302
Youichi Kimura さんがほぼ12年前に更新
h3. Overview (概要) lib/util/opToolkit.class.php 内の opToolkit::writeCacheFile() に下記のようなコードがある。 <pre><code class="php"> if ($filesystem->copy($tmpFile, $pathToCacheFile, array('override' => true))) { $filesystem->remove($tmpFile); } </code></pre> このコードには下記のような複数の問題があるため、この修正を行う。 * if の条件に、値を返さない sfFilesystem::copy() を指定している * もし sfFilesystem::copy() が成功した場合に true を返すようなメソッドであることを期待していたとしても、$tmpFile のファイルは常に削除されるべきであるため if による分岐は不要である (失敗した場合でも一時ファイルは削除すべき) * 一般的なファイルシステムの動作では copy よりも rename の方が確実かつ高速に動作する(inodeの変更のみで済むことによる)ため、sfFilesystem::copy() ではなく sfFilesystem::rename() を使うことが望ましい h3. Spec (仕様) * if による分岐を無くし、常に @$filesystem->remove($tmpFile)@ が実行されるようにする * @$filesystem->copy(...)@ の代わりに @$filesystem->rename(...)@ を使用する