問題の詳細
「すぐ使える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」が正常に動いていた場所で突然このエラーが出るようになった場合は下記ページをご覧下さい。
考えられる原因
「すぐ使える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」に変わった場合は、もう一度書き込み権限の設定をして下さい。