OpenPNEに詳しい方にご助力願いたいのですが

下記のエラーメッセージが出ます。
Fatal error: main(): Failed opening required 'DOCUMENT_ROOT./lib/init.inc' (include_path='.:/usr/share/pear') in /var/www/html/OpenPNE/public_html/index.php on line 4
上記のDOCUMENT_ROOTはどこを指しているのでしょうか?いろいろ手探りで変更しても前に進みません。OS:FC3/PHP4.3.11/mySQL4.2/

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2006/03/25 14:15:37
  • 終了:2006/03/27 09:28:59

ベストアンサー

id:bonlife No.4

回答回数421ベストアンサー獲得回数752006/03/27 02:55:25

ポイント40pt

DOCUMENT_ROOTという定数がdefineされていないエラーが発生していますね。

私は1.8.3のソースを見ていたのですが、バージョンが異なるようです。

参考URL

(それとも、どこかのサイトを参考にして修正を加えたりしていますか。)

1.8.3のconfig.inc.phpは2回目の回答にあるように4行の記述しかありません。

<?php
// public_html の場所を変更する場合は以下を編集してください
define('DOCUMENT_ROOT', realpath('../'));
?>

ここではABSOLUTE_PATHの設定は行いません。

ABSOLUTE_PATHの設定をするのは、config.inc内です。

紛らわしいかもしれませんが、少なくともバージョン1.8.3ではconfig.incとconfig.inc.phpは別のファイルです。

config.inc.phpはDOCUMENT_ROOTを設定するためだけのファイルです。

config.inc.phpは通常編集不要です。

一方、config.incはconfig.inc.sampleの内容を編集して、

  • /var/www/html/OpenPNE/

の直下に置く設定ファイルです。

誤ってconfig.inc.sampleの内容を編集してconfig.inc.phpの場所に置いたりしていないでしょうか。

違うバージョンのソースを前提にして話をすると他の箇所で問題が出てくる可能性がありますが、取り急ぎ思いつく回避方法を説明いたします。

まず、init.incの場所を確認してください。

init.incが

  • /var/www/html/OpenPNE/lib/init.inc

にあるならば、DOCUMENT_ROOTを /var/www/html/OpenPNE/ にすれば、index.phpの

require_once DOCUMENT_ROOT . '/lib/init.inc'

でinit.incを読み込むことが出来ます。

そこで、config.inc.phpに以下の内容を追記して、DOCUMENT_ROOTという定数を定義します。

define('DOCUMENT_ROOT', realpath('../'));

これでinit.incの読み込みはできるようになるはずです。

特に事情がない限り、最新の安定版を使うべきだと思いますので、OpenPNE 1.8.3のインストールも検討してみてください。

その際には、config.inc.sampleを編集するconfig.incとDOCUMENT_ROOTを設定するだけのconfig.inc.phpを混同しないようにご注意ください。

id:kaji0245

ご回答、ありがとうございます。

おかげさまでバッチリ正常になりました。

原因はconfig.phpとconfiginc.phpを私が同じものと混同してしまい中身が同じになってました。

ここまで落とし込んで対応していただいたおかげで突き止めることができました。

本当にありがとうございました。

2006/03/27 09:27:09

その他の回答(3件)

id:tadashi0805 No.1

tadashi0805回答回数287ベストアンサー獲得回数292006/03/25 15:09:08

ポイント23pt

OpenPNEというよりは、Webサーバー+PHPの設定でのエラーのように思えます。

DOCUMENT_ROOTの値は、WebサーバーがApacheなら、httpd.confの中に

http://nekhet.ddo.jp/item/781

にあるように設定があります。

id:kaji0245

ご連絡ありがとうございます。実はOpenPNEのインストールに苦戦中でして下記の記述があったものですから、つい・・・

注意:

public_html/config.inc.php 内に書かれている DOCUMENT_ROOT はOpenPNEのソースが置いてあるディレクトリを指しており、 Apacheの設定ファイル httpd.conf における DocumentRoot(ブラウザから見えるディレクトリ) とは意味が違いますので注意してください。

再度、Apacheもいじりながら戦ってみます。

2006/03/25 16:26:47
id:bonlife No.2

回答回数421ベストアンサー獲得回数752006/03/25 17:41:50

ポイント23pt

順を追って調べていけば分かると思います。

まず、エラーの内容の整理します。

  • /var/www/html/OpenPNE/public_html/index.php

の4行目の

require_once DOCUMENT_ROOT . '/lib/init.inc';

で'DOCUMENT_ROOT./lib/init.inc'を見つけられないというエラーですよね。

デフォルトではindex.phpの3行目のrequire_onceで読み込まれた

  • /var/www/html/OpenPNE/public_html/config.inc.php

にて以下のように定義されていると思います。

<?php
// public_html の場所を変更する場合は以下を編集してください
define('DOCUMENT_ROOT', realpath('../'));
?>

realpathは絶対pathを取得する関数ですので、デフォルトのままであれば、このファイル(config.inc.php)があるフォルダの一階層上をDOCUMENT_ROOTとして定義していることになります。

つまり、DOCUMENT_ROOTは

  • /var/www/html/OpenPNE/

になります。

もしかしたら、DOCUMENT_ROOTの定義が正しくできていない可能性もありますので、一度index.phpの4行目に

echo DOCUMENT_ROOT;

という内容を追記して、defineで正しくDOCUMENT_ROOTが設定されているか確認してみてはいかがでしょうか。

参考になると幸いです。

id:kaji0245

ご丁寧な回答、誠にありがとうございます。

>もしかしたら、DOCUMENT_ROOTの定義が正しくできていない可能性もありますので、一度index.phpの4行目に

>echo DOCUMENT_ROOT;

>という内容を追記して、defineで正しくDOCUMENT_ROOTが設定されているか確認してみてはいかがでしょうか。

>参考になると幸いです。

上記の部分を試しても結果が同じなので、記述方法を再度ご教授願えたら幸いです。

よろしくお願いいたします。

2006/03/26 00:38:35
id:bonlife No.3

回答回数421ベストアンサー獲得回数752006/03/26 01:10:41

ポイント23pt

(URLはダミーです。)

もしかしたら上手く伝わっていなかったかもしれないので、ほぼ同内容の回答を少し詳しく説明いたします。

通常、difineで定義された定数はPHPのエラー出力でも展開されます。

つまり、DOCUMENT_ROOTが正しく設定されていれば、質問にあるようなエラーにならずにDOCUMENT_ROOTの部分がディレクトリのpathに置き換わります。

そこで、DOCUMENT_ROOTが正しく設定されているのかを確認するために、index.php前半部分の

<?php
require_once './config.inc.php';
require_once DOCUMENT_ROOT . '/lib/init.inc';

の部分を

<?php
require_once './config.inc.php';
echo "DOCUMENT_ROOTは" . DOCUMENT_ROOT . "です。";
require_once DOCUMENT_ROOT . '/lib/init.inc';

と変更してみてください。

こうすることで、DOCUMENT_ROOTがどんな内容になっているのかを出力画面で確認することが出来ます。

3行目ではなく4行目でエラーが出ていることから

  • /var/www/html/OpenPNE/public_html/config.inc.php

の読み込みは正常に完了しているようですので、疑うべきはこのconfig.inc.phpかindex.phpの4行目の記述内容ということになると思います。

config.inc.php、index.phpの出だし数行の両方の内容を教えていただければもう少しフォローできるかもしれません。

id:kaji0245

index.php前半を変更したら下記のエラーになりました。

DOCUMENT_ROOTはDOCUMENT_ROOTです。

Warning: main(DOCUMENT_ROOT/lib/init.inc): failed to open stream: No such file or directory in /var/www/html/OpenPNE/public_html/index.php on line 4

Fatal error: main(): Failed opening required 'DOCUMENT_ROOT/lib/init.inc' (include_path='.:/usr/share/pear') in /var/www/html/OpenPNE/public_html/index.php on line 4

さらにconfig.inc.phpの出だしは

//// サーバー管理設定 ////

//--- 必須設定

// Web上の絶対パス(URL)

define('ABSOLUTE_PATH', 'http://xxxxx.net/OpenPNE');

もうひとつ、index.phpの出だしは

require_once './config.inc.php';

require_once DOCUMENT_ROOT . '/OpenPNE/lib/init.inc';

となっております。

大変恐縮ですがよろしくお願いいたします。

2006/03/26 22:54:41
id:bonlife No.4

回答回数421ベストアンサー獲得回数752006/03/27 02:55:25ここでベストアンサー

ポイント40pt

DOCUMENT_ROOTという定数がdefineされていないエラーが発生していますね。

私は1.8.3のソースを見ていたのですが、バージョンが異なるようです。

参考URL

(それとも、どこかのサイトを参考にして修正を加えたりしていますか。)

1.8.3のconfig.inc.phpは2回目の回答にあるように4行の記述しかありません。

<?php
// public_html の場所を変更する場合は以下を編集してください
define('DOCUMENT_ROOT', realpath('../'));
?>

ここではABSOLUTE_PATHの設定は行いません。

ABSOLUTE_PATHの設定をするのは、config.inc内です。

紛らわしいかもしれませんが、少なくともバージョン1.8.3ではconfig.incとconfig.inc.phpは別のファイルです。

config.inc.phpはDOCUMENT_ROOTを設定するためだけのファイルです。

config.inc.phpは通常編集不要です。

一方、config.incはconfig.inc.sampleの内容を編集して、

  • /var/www/html/OpenPNE/

の直下に置く設定ファイルです。

誤ってconfig.inc.sampleの内容を編集してconfig.inc.phpの場所に置いたりしていないでしょうか。

違うバージョンのソースを前提にして話をすると他の箇所で問題が出てくる可能性がありますが、取り急ぎ思いつく回避方法を説明いたします。

まず、init.incの場所を確認してください。

init.incが

  • /var/www/html/OpenPNE/lib/init.inc

にあるならば、DOCUMENT_ROOTを /var/www/html/OpenPNE/ にすれば、index.phpの

require_once DOCUMENT_ROOT . '/lib/init.inc'

でinit.incを読み込むことが出来ます。

そこで、config.inc.phpに以下の内容を追記して、DOCUMENT_ROOTという定数を定義します。

define('DOCUMENT_ROOT', realpath('../'));

これでinit.incの読み込みはできるようになるはずです。

特に事情がない限り、最新の安定版を使うべきだと思いますので、OpenPNE 1.8.3のインストールも検討してみてください。

その際には、config.inc.sampleを編集するconfig.incとDOCUMENT_ROOTを設定するだけのconfig.inc.phpを混同しないようにご注意ください。

id:kaji0245

ご回答、ありがとうございます。

おかげさまでバッチリ正常になりました。

原因はconfig.phpとconfiginc.phpを私が同じものと混同してしまい中身が同じになってました。

ここまで落とし込んで対応していただいたおかげで突き止めることができました。

本当にありがとうございました。

2006/03/27 09:27:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません