プロが教えるわが家の防犯対策術!

プログラム初心者です。
includeやrequireなどの関数を使ってファイルを呼び込むために、下記のようなソースを作りましたが、Fatalエラーになってしまいます。どこがいけないのかご指摘をいただけないでしょうか?
ネットでこれらの関数の扱い方について検索しますと、PHPでは実行されたファイルのディレクトリがルートとして扱われるそうで、他のディレクトリを参照する時は、相対パスのみでは無理の様子でした。この場合、組込み定数となる__FILE__を使って絶対パスを導かなければいけないような記述がありました。これに習って書いてみたのですが、どうもうまくいきませんのでご指導をいただければと思います。

■以下、ツリー構造
root
|_con ←フォルダ階層
| |_nav.php ←ファイル階層
|_mod
| |_nav.csv
|_view
|_index.php

■以下、phpファイル群
/////// nav.php //////////
<?php
$Data=file (dirname(__FILE__)."/../mod/nav.csv");
for($i=0;$i<sizeof($Data);$i++){
$line=explode(",",$DataN[$i]);
?>
/////// index.php ////////
<?php
include once (dirname(__FILE__). "/../con/nav.php");
?>

A 回答 (1件)

nav.php


まず、for文の閉じ}が無い事
絶対パスでも動くし、相対パスでも動きますよ
file文は関数なので、スペース開けないように(まぁ、あけても動くけど)
$Data=file("../mod/nav.csv");
for($i=0;$i<sizeof($Data);$i++){
$line=explode(",",$DataN[$i]);
}


index.php
パスの指定の仕方がおかしい。
include onceの文法がおかしい。include onceではなく include_once です。
同じく スペースあけないように

include_once("con/nav.php");

この回答への補足

今、相対パスで実行することができ、初歩的な間違いに気づくことができました。有難うございます。
もう少し理解を深めたいので、質問しても良いでしょうか?
1)相対パスに使う、ドットは、実態のツリー階層の数と合わせる必要がありますか?
2)includeは、多段構造となっても実現可能でしょうか?多段といいますのは、a.php ← b.php ← c.phpといった具合に取り込むことです。
もし、お分かりでしたら、教えてください。よろしくお願いいたします。

補足日時:2008/07/01 02:49
    • good
    • 0
この回答へのお礼

大変助かりました。有難うございます。

お礼日時:2008/07/01 11:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!