YUI Editorでアップロードした画像がいつの間にか消えている
DrupalでYUI Editorのファイルアップロード機能を使っているが、アップロードしたはずの記事中の写真がいつの間にか消えている。念のためディレクトリを確認しても、やはり存在しない。
どうもcronタスクが実行されるときに消えていると予想。しかし一度消えたファイルをSCPでアップロードしたものについては二度と消えない。またファイルのパーミッションやオーナーを変えてみても現象が残る。
さらにはそのディレクトリにある別のファイルは消えずに残っていたりする。
実はDrupalのガベージコレクションという仕組みが、filesというテーブルにある、statusが0のファイルをすべて削除するということがわかった。これを1に設定できれば、勝手に削除されずにすむ。
include/file.incをいじってみる。
Drupal6では580行目辺りにある、
$file->status = FILE_STATUS_TEMPORARY;
の部分を、
$file->status = FILE_STATUS_PERMANENT;
に変更する。すると、YUI Editorでアップした画像もfiles.statusが1になる。
mysql> select * from files; +-----+-----+--------------+------------------------+------------+----------+--------+------------+ | fid | uid | filename | filepath | filemime | filesize | status | timestamp | +-----+-----+--------------+------------------------+------------+----------+--------+------------+ | 55 | 3 | a.jpg | sites/test.com/files/a.jpg | image/jpeg | 19073 | 1 | 1226459237 | | 60 | 3 | b.jpg | sites/test.com/files/b.jpg | image/jpeg | 19630 | 1 | 1226472276 | +-----+-----+--------------+------------------------+------------+----------+--------+------------+