2012-08-09 9 views
14

インターネットの調査に何時間も費やしてきましたが、私が理解して実装できる答えが見つかりません。PHPインクルードファイルのルートフォルダを設定する方法

私はinclude_onceファイルを使用したいウェブサイトを持っており、ローカルホストと実際のサーバーの両方で適切にウェブサイトを表示することができます。

私は以前に$_SERVER['DOCUMENT_ROOT']を使用しましたが、ローカルホストでは動作しませんので、更新してウェブサイトの変更を行うのは難しいです。

私がしたいのは、ルートフォルダがhtdocsまたはpublic_htmlと呼ばれ、そこからファイルを探し始めると言うことができる何らかのconfig.phpファイルを作成することです。

また、他の方法でパスを組み込むことができますか?

私は、 dirname(__FILE__),などですが、どのように動作するのか、どこでコードに書き込むのかなどは決して説明しませんでした。私は少しうんざりして答えの一部を見つけて、サークル内を走り回って試してみてください。 「ギャップ」の中で。私はPHPの専門家ではなく、私の人生を少し使いやすくしようとしています。

+0

あなたはどのフレームワークを使用したり、プロジェクトの生のPHPでいますか? –

答えて

28

dirname(__FILE__)__DIR__はどちらも同じで、__DIR__にはPHPが付属しています5.3

これらは、「呼び出したファイルのパス」を示すために使用されます。

 
URL: http://localhost/test/a.php 

DIR: --NIX 
    /var/www/test/a.php 
    --WIN 
    D:\lamp\www\test\a.php 

// a.php's inside 
<?php 
echo __DIR__; 

は、Linux上で使用するこの与える:あなたはすべてのプロジェクト内のconfigパラメータが必要な場合は、ちょうどあなたのconfig.phpでそれを定義し、ファイル名の両方を配置したい場所にそれを使用し、 /var/www/test

だから、含まれます。 tmp dir

./tmp/barでそれを使用して

 
./ 
    config.php 
    index.php 
    header.php 
    footer.php 
    /lib 
    foo.php 
    /tmp 
    bar.php 

./config.php define('ROOT', __DIR__ .'/');

./index.php include_once(ROOT .'header.php'); ... include_once(ROOT .'footer.php');

すなわち、。PHP include_once(ROOT .'lib/foo.php');

UPDATE

// config.php 
<?php 
define("ROOT", __DIR__ ."/"); 

そこで、我々はbanner.phpbanner.php./banners/banner.phpで待っている含めるindex.phpのためにこれを使用します。

// index.php and the very first line! 
<?php 
include_once("config.php"); 
?> 
// some html stuff 
// ... 
<?php include_once(ROOT ."banners/banner.php"); ?> 
// some more html stuff 
// ... 

だから、最初に必要な場所にconfig.phpを含める必要があります。私は、これは限り必要に応じて基本だと思います

...

は、だからあなたの問題は、とにかくincludeシステムが、質問を、PHPされていない

UPDATE ... :)

イメージパスが変更されている(固定されていないので)場合は、このようにすることができます。

// config.php 
define("ROOT", __DIR__ ."/"); 
define("HTTP", ($_SERVER["SERVER_NAME"] == "localhost") 
    ? "http://localhost/your_work_folder/" 
    : "http://your_site_name.com/" 
); 

// banner.php 
<img src="<?php print HTTP; ?>images/banner.gif"> 
+0

私はこの方法を試してみたいですが、私はそれを正しく得ることができないようです。 config.phpがどのように正しく見えるかの例を私に与えることができると思いますか?私が試してきたことはエラーを示し、うまくいかない。また、 banner.phpには画像がありますが、正しいパスは何ですか? /images/img01.jpgまたはimages/img01.jpg:P – Vetaxili

+0

更新plsを見てください。 –

+0

完全にあなたに感謝の仕事が含まれています:) 私は画像を異なるディレクトリレベルで動作させることに問題があります。 – Vetaxili

0

getcwd()という機能があり、現在の作業フォルダを返します。スクリプトの冒頭にこれを呼び出すと、これを通常define()という定数に格納できます。

define('PROJECT_ROOT', getcwd()); 
3

私は通常、あなたが言及したものを含め、ディレクトリ内のconfig.phpを設定し、その中に次の行を持っている:場合は、( "/含めるあなたのconfig.phpファイルが入っているものは何でもディレクトリでなければなりませんdefine('BASE_PATH', str_replace('/include', '', dirname(__FILE__)));を。あなたは私がinclude_once(BASE_PATH . '/directory/file.php');を使用し、私はその後、他のファイルを含めたい場合は、あなただけの)define('BASE_PATH', dirname(__FILE__));を使用することができ、ルートディレクトリにそれを持って

注:この概念は、任意の手段によって、私にはオリジナルではないです

0

取得/現在の作業ディレクトリを表示するには、PHPはこれが現在実行されているあなたのphpファイルのカレントディレクトリを表示すること

echo getcwd() . "\n"; 

のための組み込み関数を持っています。

0

あなたはまた、パスを変更することができ、例えば、

$dir = dirname(__FILE__); 
set_include_path($dir . '/../library' . PATH_SEPARATOR . $dir . '/../engine' . PATH_SEPARATOR . get_include_path()); 
関連する問題