2012-12-16 41 views
5

私のディレクトリ構造を「必要」は次のようになります。PHP - 相対パスが

blog -> admin -> index.php 
blog.php 
db.php 
functions.php 

私は(実際には、requireincludeadmin/index.phpblog.phpをしようが、エラーの多くに直面してきました。私はPHPコースに従っており、講師は同じことをうまくやっています。

管理/ index.phpを:

require "../blog.php"; 

今度は、そのディレクトリ内に2つのファイルが必要です。

require "db.php"; 
require "functions.php"; 
+0

私はあなただけつまり、レベルを、それをステップアウトする必要があると思います。 '../../ blog.php'は' blog.php'が 'blog'フォルダにないと仮定しています。 – prodigitalson

+0

私はそれがうまくいくとは思わない。 'blog.php'は' blog'ディレクトリにあります。ディレクトリ構造のあなたの表記ああ – Rafay

+0

あなたがphp.iniでのinclude_pathディレクティブを持っている理由だこと – prodigitalson

答えて

18

あなたは相対的には期待通りのパスが機能していない含めることが判明した場合、クイックフィックスは、あなたが含まれるようにしようとしているパスの前に__DIR__を付加することです。

require __DIR__ . "/../blog.php"; 

これは合理的にきれいなので、インクルードパスまたは作業ディレクトリを変更する必要はありません。

+0

これは機能しました。ありがとう!なぜ私はこれをしなければならないのか分かりません。インストラクターは「require」../blog.php「;」で何の問題もなくなります。 OSの違いのためですか?彼はMacで、私はWindows上にいる。 – Rafay

+2

は、私が実際には全くわからない - 私はそれが現在の作業ディレクトリは、常にスクリプトのディレクトリに一致していないとしなければならないと考えています。 –

+1

@ラファイ:とにかく悪い練習。常に絶対パスを計算してから、require/includeする必要があります。 – prodigitalson

-3

私はchdir($_SERVER['DOCUMENT_ROOT'])と私のファイルを開始したいです。これにより、私のすべてのインクルードの素敵で論理的な基本パスを得ることができます。

+0

:-)私に混乱しました。 –

+0

'include_path'はいえfile_exists''のようなものには適用されません。本当の使用とPHPファイルあたり) –

+0

1つのファイル操作を。 PSR-0の使用や__DIR__の使用を検討してください。 –

1

あなたは、これがindex.phpdb.php and functions.phpをファイルも含めているなら、あなたは

require "../db.php"; 
require "../functions.php"; 

このコードを記述する必要がORあなたはblog.phpにこのファイルを含めているなら、あなたがする必要がある

require "db.php"; 
require "functions.php"; 
1

このコードを書きますphp.iniにinclude_pathを設定してください。

あなたは、実行時にそれを設定したい場合は、set_include_path()を使用しています。