小規模Webサイト向け CMS 「すぐ使えるCGI」のサポート情報

「ロックが取得できませんでした。」というエラーが出ます

最終更新日: 2015-02-19

問題の詳細

「すぐ使えるCGI」を設定中で、管理画面( admin/admin.cgi )にアクセスした時に「ロックが取得できませんでした。」というエラーが出る場合の対応方法をご説明します。

エラーメッセージの例

ロックが取得できませんでした。
can't get exclusive lock; can't mkdir 
(環境によって色々)/data/lock: No such file or directory

エラーメッセージの末尾(上記の青字部分)が「No such file or directory」か「Permission denied」の場合の対応方法をこのページでご説明します。

このページの案内に該当しないケース(「File exists」)

エラーメッセージの末尾(上記の青字部分)が「File exists」の場合は下記ページをご覧下さい。

「ロックが取得できませんでした。」「File exists」というエラーが出ます

今まで動いていた場所で問題が出た場合

今まで「すぐ使えるCGI」が正常に動いていた問題で突然このエラーが出るようになった場合は下記ページをご覧下さい。

CGIで突然エラーが出るようになりました

考えられる原因

「すぐ使えるCGI」の設定中でこのエラーが出る場合、考えられる原因は下記の2つです。

可能性1

アップロードしたディレクトリ data/ に書き込み権限が無い場合があります。

可能性2

ディレクトリ( data/ )がサーバ上で見つからない場合にこのエラーが出ます。
環境変数 $conf{data_dir} で指定した相対パスの階層がずれていたり、ルートディレクトリの起点がずれている可能性があります。

補足

なお、エラーメッセージの末尾に「No such file or directory」と表示される場合、英語が示す「そのようなファイルもディレクトリもありません」つまり、「可能性2」が本当のエラーの原因である場合もありますが、「Permission denied」(権限がありません)と同じ状況でこのエラーが表示される場合があります。この場合は原因は「可能性1」に当たりますので、エラーメッセージからだとどちらかが判別できません。このため、対応としては両方の問題が無いかを確かめます。

対応方法

書き込み権限(パーミッション)の確認

まずはサーバ上の data/ ディレクトリの書き込み権限を確認し、書き込み権限が無ければ下記の通り設定を変更して下さい(サーバによって方法が異なります)。
なお、もしディレクトリ自体が無ければアップロードして下さい。

Windows サーバの場合の設定

サーバごとに設定方法が違いますので、サーバのマニュアルを参照して下さい。通常は管理画面などがあります。

ご自身でサーバホストを管理している場合は、data/ ディレクトリのプロパティパネルから、CGI実行ユーザでの書き込みを許可する設定をして下さい。書き込み許可だけでうまくいかない場合、「フルコントロール」や「ネットワークユーザによるファイルの変更を許可する」等の設定を試して下さい。
(他に推奨されている設定があれば、そちらにして下さい。)

UNIX系OSの場合の設定(Linux、CentOS、FreeBSD、Solarisなど)

読み取り・書き取り・実行 全てのパーミッションを設定して下さい。

CGI( admin/admin.cgi )のパーミッション data/ ディレクトリのパーミッション
700 の場合 700 rwx------
750 / 710 の場合 770 rwxrwx---
755 / 705 / 701 の場合 707 rwx---rwx
admin/admin.cgi が 755 で
data/ を 707 にしてエラーが続く場合
770 rwxrwx---

確認

書き込み権限の設定を変更したら、管理画面を再読み込みして下さい。エラーが解消されていれば、これで対応完了です。

書き込み権限の設定では問題が解消されない場合、下記の対応も続けて行って下さい。

パスの決定

現在の環境変数 $conf{data_dir} の設定はどこかが間違っている可能性がありりますので、環境に適合したパスを割り出して下さい。

Windows サーバの場合、ルートディレクトリからのパス( C:/wwwroot/data/ など)でないとうまく動作しない場合があります。それ以外にこのエラーの場合に多く見られる間違いは、「../」でディレクトリをさかのぼる数が違っている、http から始まるURLでディレクトリ指定をしている、などです。

下記ページに設定例がありますので参考のためにご覧下さい。

ディレクトリ構成と環境変数の設定例

admin/admin.cgi の編集

admin/admin.cgi をテキストエディタで開いて下さい。
65行目付近に $conf{data_dir} を設定する場所がありますので、この設定を変更して下さい(青字の部分)。

#--------------------------------------------------------[line 065]--
# データディレクトリ
#--------------------------------------------------------------------
# アーカイブに含まれていた data/ ディレクトリへのパスを指定します。
# 相対パスでも絶対パスでも指定できます。
# Windowsで稼動させる場合、絶対パスでないとアクセスできない場合があり
# ます。

$conf{data_dir} = '../data/';

変更が終わったらファイルを保存して下さい。

アップロード

admin/admin.cgi をサーバに上書きアップロードして下さい。

確認

管理画面を再読み込みして表示を確認して下さい。エラーが解消されていれば、これで対応完了です。

末尾が「Permission denied」という表示になる場合

この変更でエラーメッセージの末尾が「Permission denied」に変わった場合は、もう一度書き込み権限の設定をして下さい。

関連リンク

さらに詳しく