2010-12-02 19 views
0

は、私は彼らを「エコー」がオンのとき、彼らは同じパスを返しているので、違いは何だろうか。あなたはどちらを使うべきですか?それはなぜですか?PHPを含むファイル

ありがとうございます!

答えて

3

両方が_ FILE _

ファイルのフルパスおよびファイル名

異なっています。インクルードの内部で使用された場合、インクルードされたファイルの名前が返されます。 PHP 4.0.2以降、FILEには常にシンボリックリンクが解決された絶対パスが含まれていましたが、古いバージョンでは状況によっては相対パスが含まれていました。

ソース:PHP magic constants

レッツは、あなたの文書が/var/www
であり、あなたのインデックスページが/var/www/index.php

dirname(__FILE__) == $_SERVER['DOCUMENT_ROOT']; 

しかし、あなたはドリルダウンをサブフォルダに/var/www/posts/index.php

のような場合である、と述べました
dirname(__FILE__) != $_SERVER['DOCUMENT_ROOT']; 
/var/www/posts != /var/www 

この場合、$_SERVER['DOCUMENT_ROOT']の使用がより適切です。

+0

説明していただきありがとうございますajreal! – Woppi

2

__FILE__は、常に現在のファイルパスを指し、そしてそれがよりセマンティックあるとしてドキュメントルートパス;-)

から$_SERVER['DOCUMENT_ROOT']ポイント私は、最初のものを好みます。

docrootにないファイルの値を比較しようとすると、別の値が得られます。

0

前者はHTTPサーバー(またはVirtualHost)のルートフォルダで、サーバー設定です。

後者は、現在のファイルを含むフォルダです。

私の意見では、使用は完全に要件に基づいています。

0

WebサイトまたはWebアプリケーション内のどこからでもWebサイトのルートフォルダを参照する場合は、通常$_SERVER['DOCUMENT_ROOT']を使用します。

ファイルを含める場合、同じディレクトリのファイルをいくつか追加する必要がある場合は、dirname(__FILE__)が便利です。私はこれは私がちょうど私のウェブサイトまたはWebアプリケーション内の任意の場所からdribbble.phpが含まれ、また同時にbase.phpshot.php、およびplayer.phpなど、心配することはできませんを意味し、私のPHP wrapper for the Dribbble API

class Dribbble { 

    function __construct() { 
     require_once(dirname(__FILE__) . '/base.php'); 
     require_once(dirname(__FILE__) . '/shot.php'); 
     require_once(dirname(__FILE__) . '/player.php'); 
    } 
} 

でこれを使用しています。

関連する問題