CMS「すぐ使えるCGI」の開発者がご質問にお答えします

 

Windowsサーバーで「ロックが取得できませんでした」と表示されます(IIS環境) (No. 228)

回答日: 2007-08-03

質問

いつもお世話になっております。
Windowsサーバーで「画像付ウェブページ更新ツール Ver1.2.2 日本語 Shift_JIS 版」を設置しようと思っています。
ディレクトリ構造は
/ (ルートディレクトリ)
        |-- Cgi-bin/admin.cgi          ←CGIプログラム
        |-- new/
                |--admintool/
                |         |-- data/
                |         |-- tempfiles/
                |         |-- templates/
                |--items/                     ←記事書き出しディレクトリ

となっています。
実際に稼働させたときのURLは
http://www.xxxxx.xx.xx/Cgi-bin/admin.cgi
のように「ロックが取得できませんでした」との表示で動作がうまくいきません。

ちなみに
http://www.xxxxx.xx.xx/new/admintool/data/
をアクセスしますと
Directory Listing Denied
と表示されますので、このdataディレクトリへのパスへのスペルミスもないと思います。(File Not Foundではありませんので)
お知らせいただきましたチェックプログラムを試してみましたが
http://www.xxxxx.xx.xx/Cgi-bin/test.cgi
このようになりました。
admin.cgiの文法チェックももちろん、問題ありませんでした。

CGIの変数data_dirは、
$conf{data_dir} = 'd:/users/xxxxx_xx_xx/new/admintool/data/';
と記述しました。

なぜこのような現象になるのか教えていただければと思います。
よろしくお願いいたします。
投稿日時: 2007-08-03 11:49

回答

■パスの設定について

パスの設定内容などを確認させていただきましたが、階層の違い、スペルミス等の基本的な問題は見当たりませんでした。

指定自体はこれで正しく設置した data/ ディレクトリを指していると思います。

■他に考えられる原因

サーバの方の設定でこの問題が出ていると考えられますので、サーバ管理者様に、エラーの現象と合わせて以下の可能性がないかご確認ください。

・CGI実行ユーザに対して「ディレクトリの参照」が制限されている(途中の階層も含)
・cgi から書き出すファイルの場所に制限がある( Cgi-bin/ 配下に限る、など)
・data/ という名前のディレクトリへの書き出しが制限されている
・CGIからの書き出し自体が制限されている

もしサーバ管理者様から充分な回答が得られない場合、ウェブサーバのエラーログが入手できればそれをご連絡下さい。

また、Cgi-bin/ 配下 に data/ ディレクトリを移動(位置の移動および環境変数の変更)して同じ問題が起きるかを試してみて下さい。

この場合、環境変数の設定は以下の2通りを試してみて下さい。

a. 絶対パスでの指定)
$conf{data_dir} = 'd:/users/xxxxx_xx_xx/Cgi-bin/data/';

b. 相対パスでの指定)
$conf{data_dir} = './data/';


■補足

Windows IIS の場合、権限の設定にはかなりバリエーションがあり外部からだとなかなか原因の特定や解決が難しいのが現状です。
サーバ管理者様からのご協力が得られない場合、稼動ができない場合もありますので何卒ご了承下さい。



◆入力頂いた内容からの変更点

URLを非表示にしました。
タイトルに環境を追加しました。
回答日: 2007-08-03