サーバ管理者向けの情報です。
Apache 2.2からは少なくても下記の点に注意が必要です。
- SELinuxを有効にしている場合
- .htaccessによるRewriteルールを設定している場合
前者については、一度機能をOFFにして試してみてください。それで問題が解決するようなら、SELinuxの問題です。これについてはここでは割愛します。
前提条件として、SELinuxが無効になっているにも関わらず、
- Unable to PUT new contents
というエラーログとともに、閲覧やすでにあるファイルのデータ編集・保存が可能で、コピーや追加などができない場合には、「2」に該当する可能性があります。
特に、WordPressなどCMSツールを使ったウェブサイト構築においては、たとえばパーマネント設定をしたときなどにCMS自身が.htaccessに対して設定を書き込むことがあります。そのルールの中にRewriteが書かれていると、上記エラーと共にWebDAV経由のファイルアップロードやコピーが出来なくなります。
解決策
- .htaccessではなく、Apacheの設定に直接書き込む
- Rewriteの機能を止める
の二通りあります。
1. .htaccessではなく、Apacheの設定(httpd.conf等)に直接書き込む
WordPressの一例としては、
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index¥.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
です。もしキャッシュ系プラグインを使っているなら、設定が増えているかもしれません。
2. Rewriteの機能を止める
<IfModule mod_rewrite.c>
いろいろな設定とか。
RewriteEngine off
</IfModule>
のように、「RewriteEngine off」を入れておくことです。
しかしながら、WordPress等でパーマネント設定を使っている場合には誤動作するかもしれません。