人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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/

●質問者: kaji0245
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:HTML INDEX LIB ON OpenPNE
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● tadashi0805
●23ポイント

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

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

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

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

◎質問者からの返答

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

注意:

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

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


2 ●
●23ポイント

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

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

の4行目の

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

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

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

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

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

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

つまり、DOCUMENT_ROOTは

になります。

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

echo DOCUMENT_ROOT;

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

参考になると幸いです。

◎質問者からの返答

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

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

>echo DOCUMENT_ROOT;

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

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

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

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


3 ●
●23ポイント

(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行目でエラーが出ていることから

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

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

◎質問者からの返答

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';

となっております。

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


4 ●
●40ポイント ベストアンサー

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の内容を編集して、

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

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

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

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

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を混同しないようにご注意ください。

◎質問者からの返答

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ