2011-04-27 23 views
3

私はPHPでWebアプリケーションを持っています。私はheader.phpファイルを持っています。私はオープンhtmlタグ、メタデータ、CSS、jsファイルを持っています。php - ヘッダーファイル - 相対パスの問題

私はこのアプリケーションに複数のフォルダを持っています。私はheader.phpのCSS、jsファイルに相対パスを与えました。私が直面している問題は、このheader.phpファイルを他のファイル、例えば./test-folder/my-file.phpに含めると、相対パスが壊れることです。

これを解決するために、私は絶対に必要な場所に絶対パスを与えました。しかし、私はサーバーにアップロードするたびにこれらのパスを変更する必要があります。他の方法でこれを行うことはできますか?事前に

おかげ

安吉

答えて

11

代わりに、ドキュメントルートのための定数を定義し、この定数を使用することができますファイルを含めてその一定の

define('ROOT_PATH',$_SERVER['DOCUMENT_ROOT']); 

を使用するパスの静的な値を使用しないでください。

include ROOT_PATH.'/some_dir/file.php'; 
+0

感謝を。どのファイルで 'ROOT_PATH'を定義する必要がありますか? 'header.php'は何をしますか? – Anji

+1

@Anji:設定変数を保持する 'config'ファイルが1つあり、アプリケーションが起動するとすぐにインクルードされます。 –

+0

これは 'config'ファイルを含む同じ問題でしょうか? – Anji

1

相対パスは、現在の作業ディレクトリ(cwd)からの相対パスです。 にはが含まれています。以外のファイルはになります。
現在のスクリプトファイルパスに相対的な(ある程度の)パスを使用する場合は、たとえば、

require dirname(__FILE__).'/some_dir/file.php'; 

やPHPのよう5.3

require __DIR__.'/some_dir/file.php'; 

も参照:http://docs.php.net/language.constants.predefined

0

私は右のあなたの質問を理解している場合、あなただけのハードコーディングすることなく、ルートフォルダ、アプリケーションを知りたいのですがそれ。

もっと簡単な方法は、Shaktiが答えたときに定数を定義することです。

しかし、実際にはルートフォルダに "foobar"などの固有の名前を持つファイルを作成し、foobarが見つかるまで現在のディレクトリからツリーを上っていくことができます。

+0

申し訳ありません "foobar"ファイルが何であるかを知ることができませんでした。 – Anji

+0

/var/www/public_html /に「foobar」があり、あなたのcwdが不明だとしますが、確かに/ var/www/public_html/my/current/folder /のようなものです。 現在の作業ディレクトリを取得した後、foobarが見つからない場合は、1つ上のレベルになります。あなたのfoobarファイルを見つけたら、ルートディレクトリを手に入れました。 – mmhan

+0

ええ..基本的には、foobarはルートディレクトリを取得するために使用されます。リンクに感謝 – Anji