web-dev-qa-db-ja.com

Moodleエラー-致命的なエラー:$ CFG-> datarootは書き込み可能ではありません。管理者はディレクトリのパーミッションを修正する必要があります!終了します。

Debian SqueezeボックスでApache 2.2を使用してMoodle 2.4.8(ビルド:20140113)を実行しています。ユーザー(管理ユーザーも)が特定の設定を変更するたびに(つまりユーザーの追加)、または特定のコースにアクセスする(この場合はMath 9)、ページに503エラーが表示されます。致命的なエラー:$ CFG-> datarootは書き込み可能ではありません。管理者はディレクトリのアクセス許可を修正する必要があります!終了します。

/config.phpファイルを確認すると、/var/moodledata2が所有するwww-data www-dataにパスが設定されており、Moodleドキュメントに権限が並んでいます。

これは週の初めには断続的でしたが、今では一定になっています。使用可能な空き領域がたくさんあります(以下を参照)。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md2               83G   37G   42G  48% /
tmpfs                 2.0G     0  2.0G   0% /lib/init/rw
udev                  2.0G  224K  2.0G   1% /dev
tmpfs                 2.0G     0  2.0G   0% /dev/shm
/dev/md1              939M   35M  857M   4% /boot
/dev/md3              822G  355G  426G  46% /var
/dev/md4              917G   72G  799G   9% /var/moodledata2

# cat config.php
<?php  // Moodle configuration file

unset($CFG);
global $CFG;
$CFG = new stdClass();

$CFG->dbtype    = 'mysqli';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'moodle2';
$CFG->dbuser    = 'root';
$CFG->dbpass    = '<removed>';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbsocket' => 0,
);

$CFG->wwwroot   = 'http://example.com/moodle2'; // <removed>
$CFG->dataroot  = '/var/moodledata2';
$CFG->admin     = 'admin';

$CFG->directorypermissions = 0777;

$CFG->passwordsaltmain = '<removed>';

require_once(dirname(__FILE__) . '/lib/setup.php');

// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!
#

何をすべきか迷っています。アクセス許可は、そのあり方(www-dataがすべてを所有し、/var/moodledata2フォルダーへの完全なアクセス権を持っている)が論理的であるように見えます。次のステップは何ですか?

3
Canadian Luke

編集:明らかなテクニックの1つに言及するのを忘れました。特定の問題の詳細については、サーバーおよびプログラムのエラーログを参照してください。フロントエンドを介してユーザーに表示されるエラーは、多くの場合、意図的に一般化されています。

問題を解決するには、プログラムをデバッグして、失敗したプロセスで使用されているファイルを見つけます(または開発者に直接尋ねるのが最も簡単な方法かもしれません)。 phpプログラムをデバッグする効率的な方法の1つは、phpeclipseなどのプログラムにロードすることです。問題の原因となっているファイルを特定したら、個別に問題を確認します。破損の問題や、正しい所有権または許可を持つプログラムによってファイルが作成されない問題に遭遇する可能性があります。

このリンクは、デバッグの開始に役立つ場合があります。 http://www.ibm.com/developerworks/library/os-debug/

また、データディレクトリに作成された新しいファイルに正しい権限と所有権があることを確認してください。データディレクトリの制限が厳しすぎるため、実行中のスクリプトに新しいデータを作成するための適切な権限がないため、スクリプトがサーバー上に新しいデータを作成できないことがあります。

これは私のステップ1:上記のどれもうまくいかない、またはあまりにも気難しいと思われる場合は、本番サイトをテストサーバーに移動して、できるかどうかを確認してください問題を再現します。サーバー構成とプログラムの問題を切り分けるために、別のオペレーティングシステム構造に移動できる場合はさらに良いでしょう。

2
JMC

この後、Centos 7でも同じエラーが発生しましたlinuxコマンド、正常に動作しています!

setenforce 0
2
Kuhan