FreeBSD 10.2 RELEASE - Subversion - トラブルシュート - Checksum mismatch


 クラウディア


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」のリポジトリでは無効となって、チェックアウトに支障が出なくなりました。

earthcar(アースカー)