問題の現象
「すぐ使えるCMS」で既に登録してある記事の変更または削除をした時に、エラーに以下の1、2の両方が含まれている。
- 「記事削除に失敗しました。」または「記事書き出しに失敗しました。」
- 「unlink」または「rename」またはこの両方
エラーメッセージの例
記事書き出しに失敗しました。unlink: ../webdir/4/image2.png: Permission denied
記事書き出しに失敗しました。unlink: ../webdir/6/old-image.png: Permission denied,
rename: ../tempfiles/temp_1389445681/new-image.png-
../webdir/6/new-image.png: Permission denied
記事削除に失敗しました。添付ファイルの削除に失敗しました。 ../webdir/3: unlink
../webdir/3/document.pdf failed: Permission denied
記事書き出しに失敗しました。rename: ../tempfiles/temp_1389445480/image1.png-
../webdir/2/image1.png: Permission denied
類似の現象
補足情報: このエラーが起きる時の付帯状況
- このエラーが起きる記事がある一方、エラーが起きない記事もあります。
- このエラーが起きる記事でも、テキストだけの変更は可能です。
エラーの原因
直接的には、webdir/ の中に添付ファイルや画像用のディレクトリがあり、これらのディレクトリ(例:webdir/1/)内への書込みや中のファイルの削除ができない事が原因です。
典型的には、webdir/ の下に既に書き出された添付ファイル用のディレクトリがある状態で場所の移動やサーバの変更を行い、移設後、webdir/ に書き込みパーミッションは付けたのに、webdir/1/、webdir/2/...にはパーミッション設定を忘れた時にこの問題が起きます。ディレクトリがある状態で移設(設置場所の変更)をした場合は、これらのディレクトリにも webdir/ と同様に書き込みパーミッションを設定しないと添付ファイルの削除や新たな書き出しができなくなるので、移設後の編集作業でファイルを追加または変更したり、記事自体を消す時にこのエラーが出るのです。
移設後新たに作られたディレクトリ(=新しい記事や、移設後に初めて画像を添付した場合)は始めから適したパーミッションで作成されますので、エラーの起きない記事や画像、ファイルがあるのはこのためです。また、サーバによってはFTPアップロードの後に書き込みパーミッションの設定が不要な場合がありますので、「前回移動した時と同じ手順で行ったのに今回はエラーが出た」というような場合は、サーバのタイプが違っていた可能性があります。
対応方法
環境によって、それぞれ以下の通りサーバの設定を変更して下さい。変更後に、管理画面の一覧に戻ってから編集操作をもう一度お試し下さい。
Windows サーバの場合
ディレクトリ webdir/ の中にある 1/、2/、3/ などの数字の名前がついたディレクトリ全てに、CGIの実行ユーザでの「書き込み」と「サブフォルダーとファイルの削除」の権限を付けて下さい。
上記の設定ではうまくいかない場合、「フルコントロール」や「ネットワークユーザによるファイルの変更を許可する」等の設定を試して下さい。
(サーバで推奨設定がある場合、そちらにして下さい。)
UNIX 系サーバの場合
ディレクトリ webdir/ の中にある 1/、2/、3/ などの数字の名前がついたディレクトリ全てに、下記の通りパーミッションを設定して下さい。CGI ファイルのパーミッションによって、設定するパーミッションが異なります。なお、サーバで推奨設定がある場合、そちらを設定して下さい。
CGI( admin/admin.cgi )のパーミッション | webdir/#/ のパーミッッション(#は数字) |
---|---|
700 の場合 | 755 rwxr-xr-x |
755 / 705 / 701 の場合 | 757 rwxr-xrwx |
750 / 710 および 755 で上記ではうまくいかない場合 | 775 rwxrwxr-x |