- 1. 現象発生
- 2. 原因
- 3. 対応
1. 現象発生
「TortoiseSVN」で、ファイルをチェックアウトしようとしたら
というエラーが発生し、チェックアウトできないという現象が発生しました。
2. 原因
当初、リポジトリが破損しているのかと思って、チェックしてみました。
「oot」ユーザ権限で。
$ svnadmin verify リポジトリ名
* Verifying repository metadata ...
* Verifying metadata at revision 11 ...
* Verifying metadata at revision 19 ...
・・・
* Verified revision 0.
* Verified revision 1.
・・・
結果、リポジトリが破損しているわけではありませんでした。
「Apache」のエラーログを見てみましたら
[] [error] [client] client denied by server configuration: /ディレクトリ名
[] [error] [client] unable to include "ディレクトリ名index.html" in parsed file dav_svn:/ディレクトリ名/ファイル名.html
[] [error] [client] client denied by server configuration: /ディレクトリ名
[] [error] [client] unable to include "//ディレクトリ名/ファイル名.php" in parsed file dav_svn://ディレクトリ名/ファイル名.html
※日時やIPアドレスの項目は省略しています。
わたしは、「SSI」を使用しているのですが、どうも「Apache」で「inlcude」を解釈してしまっていて、「inlcude」しようとするファイルを相対パスで記述してあるために、「inlcude」エラーが発生してしまっているようです。
3. 対応
ほぼ、個人的に使用しているサーバなのでドキュメントルートからほぼ一律に定義を有効にしていたのですが、少なくとも「SSI」に関しては限定的に記述しなければならないようです。
以下、「Apache2.2」での記述になりますが、
「/usr/local/etc/apache22/httpd.conf」を以下のように編集
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
Order deny,allow
Deny from all
</Directory>
となっていれば
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride All
Order deny,allow
Deny from all
</Directory>
とします。
「AllowOverride None」は「.htaccess」で設定の上書を何も許可しないという定義です。
「AllowOverride All」は「.htaccess」で設定の上書をすべて許可するという定義です。
「DocumentRoot」の「Directory」定義に同じものがあれば上記と同様に変更します。
もうひとつ
<IfModule mime_module>
AddOutputFilter INCLUDES .shtml .php
</IfModule>
となっていれば # をいれて
<IfModule mime_module>
#AddOutputFilter INCLUDES .shtml .php
</IfModule>
無効にします。
それから「Subversion」のリポジトリを定義している以外のディレクトリで、「SSI」を有効にしたいディレクトリのルートの「.htaccess」を編集します。「.htaccess」がない場合は作成して
AddOutputFilter INCLUDES .shtml .php
を記述します。
上記により、「inlcude」を有効にしたいところでは有効になり、「Subversion」のリポジトリでは無効となって、チェックアウトに支障が出なくなりました。
|
|