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

問題の詳細

「すぐ使えるCMS」を設定中で、管理画面( 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」というエラーが出ます

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

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

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

考えられる原因

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

可能性1

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

可能性2

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

補足

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

対応方法

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

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

Windows サーバの場合の設定

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

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

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

読み取り・書き取り・実行 全てのパーミッションを設定して下さい。CGI ファイルに設定されているパーミッションから、data/ に対して必要な設定を割り出して(下表参照)設定して下さい。

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」に変わった場合は、もう一度書き込み権限の設定をして下さい。

関連記事

FTPアップロードとパーミッションの設定方法

基本のマニュアル インストール
ホームページを公開するには「FTP」と呼ばれるサーバへのファイルの転送作業が必要です。CGIを設置するには「パーミッション」の設定も必要です。FTPソフトの入手方法、ファイルアップロードの方法、パーミッション設定の...

CGI のパーミッション(権限設定)の解説

基本のマニュアル インストール
CGI のパーミッションの解説。設定と、実際に許可される動作の説明。ファイルに対するパーミッション設定とディレクトリに対するそれの違いの説明。サーバによる設定の違いの説明。

関連コンテンツ