検索
ホームページバックエンド開発PHPチュートリアルPHPの絶対パスと相対パスの関係の解析_PHPチュートリアル

PHPの絶対パスと相対パスの関係の解析_PHPチュートリアル

Jul 21, 2016 pm 03:40 PM
aspphpできないそして関係分析する使用比較的絶対急行パス

php中好像不能像asp那样用“/”表示根目录,代之以$_SERVER['DOCUMENT_ROOT'],其它则相同:../表示向上一层。./表示当前层。假如现在a/b/c/s.php要调用根目录下的 /bb/s2.txt,则:

$RootDir = $_SERVER['DOCUMENT_ROOT'];
$fireDir = "$RootDir/bb/s2.txt";

或者:“../../../bb/s2.txt”表示向上返回到b再向上到a再向上到根目录然后到bb下。

前一阵子老是受php开发中,文件互相引入require()相对位置关系的困扰,为了彻底弄清它们的关系,笔者做了个实验。

以下是实验图:

当前项目(project2)的绝对路径是:D:\www\php_case\Coucom_make。也就是我们当前项目的根目录root.
  
为了能更加清楚的表述不同级别的目录文件相互的引入问题,偶大胆将引用分成三种类型即:上级对下级的引用(简称上级引用,英文译为:superior to underling。简称(stou)).

下级对上级的引用(简称下级引用,英文反之便是)

平级引用或叫同级引用(英文:paratactic)。  
 
好了,我们明确了引用类型,下面我们来看不同类型引用它们有着什么样的规则。

我们先来说说上级引用:

看我们的实验图,在图中项目下分别有aa bb ee 三个同级目录和一个index.php文件,在bb下又有cc目录,cc下又有dd目录和cc.php ccc.php两个文件,同样dd下也包含一个dd.php文件。凡是上层对下层均属上级引用.

例如:index.php对于所有文件的引用:
   cc .php对dd.php的引用:
   ee.php对dd.php的引用:

大家仔细看一下目录结构,便会发现这三种引用虽然同属于上级引用,但它们又不完全相同,我把它分成两种情况:即在上级引用中存在两种引用情况:1.从属的上级引用(类如cc.php对dd.php,,因为这两个文件同属于cc目录)2.非从属的上级引用(类如index.php对于所有文件的引用和ee.php对dd.php的引用都属于这种情况因为它们与被引用的文件并没有一个共同的父目录,在能相对于站点根目录).

对于从属上级引用:

以下是在cc.php对dd.php的引用

require('dd/dd.php');

对于非从属上级引用:

以下是在ee.php中对cc.php的引用

require('../bb/cc/cc.php');

上記は上位の参照です。以下で下位の参照について学びましょう!同様に、下位層から上位層への参照は下位参照であり、下位カテゴリと非下位カテゴリに分類されます。下位下位参照の相対パスは、親ディレクトリをルート ディレクトリとします。次に例を示します。

Ttt.php による bbff.php への参照は、次の状況に該当します: require('../bb/cc/cc.php');

関連性のない下位参照は、Web サイトのルート ディレクトリに基づいています。例:

ccc.php の ee.php への参照: require('../../ee/ee.php');

上記は従属引用についての紹介です。最後に、水平引用またはピア引用について見てみましょう。実は、兄弟引用も従属兄弟引用と非従属兄弟引用の 2 つの状況に分けられます。

従属兄弟参照は非常に単純です: つまり、同じディレクトリ内の 2 つのファイルへの参照です

例: dd.php require('ttt.php');の ttt.php を参照してください。

非従属ピア参照: つまり、同じディレクトリ内にない 2 つのファイルへの参照 (共通の親ディレクトリはなく、Web サイトのみが親ディレクトリです)、レベルは同じです。例: aa.php 引用 ee.php require('../ee/ee.php');

上記は 3 種類の異なる状況での参照です。ネストされた参照に関連する問題もあります。

例:

ff.php は dd.php を参照し、dd.php は gf.php を参照します。 この場合、dd.php は従属参照内の非従属参照である gf.php を参照します。 this: require('. ./../../ee/gf.php'); ff.php の dd.php への参照は上位参照の下位参照です。 書き方は次のようになります。 ./cc/dd/dd.php' ); しかし、ff.php 内に gf.php ファイルが見つからないことがわかります。これを dd.php に記述する必要があります。 require('../ee/gf.php'); これが唯一の正しい書き方です。なぜでしょうか。ネストされた参照の場合、参照されるファイルの相対パスは、最終的な参照されるファイルに基づく必要があるためです。

要するに:

実際には、Web ルート ディレクトリをルート ディレクトリとして使用します。たとえば、ファイルには、すべてのファイルに含める必要があります。共通です.php

このファイルがルートディレクトリに配置されている場合

wwwroot/global.php

最初の行に chdir(dirname(__FILE__)); //global.php があるディレクトリに切り替えて、そのディレクトリをたどります

他のファイルによって使用されています

「../../../global.php」が必要;

「aa/aa.php」が必要; 以上です。global.php は既にパスを wwwroot に切り替えているので、多くの人ほど面倒なことをする必要はありません


define('ROOT_PATH',dirname(__FILE__));

ROOT_PATH が必要です....

chdir(dirname(__FILE__)); は実際に非常に簡単に使用でき、このファイルを相対位置でインポートするには、他のインポートされたファイルがそれに基づいているだけです。

http://www.bkjia.com/PHPjc/321391.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/321391.html技術記事 php では、asp のようなルート ディレクトリを表すのに「/」を使用することはできないようです。代わりに、$_SERVER['DOCUMENT_ROOT'] を使用します。他のものは同じです。../ は 1 つ上のレベルを表します。 ./ は現在のレイヤーを表します。 a/b/c/s.php が今必要な場合...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
トラフィックの高いウェブサイトのPHPパフォーマンスチューニングトラフィックの高いウェブサイトのPHPパフォーマンスチューニングMay 14, 2025 am 12:13 AM

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

PHPでの依存関係注射:初心者向けのコード例PHPでの依存関係注射:初心者向けのコード例May 14, 2025 am 12:08 AM

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

PHPパフォーマンス:アプリケーションを最適化することは可能ですか?PHPパフォーマンス:アプリケーションを最適化することは可能ですか?May 14, 2025 am 12:04 AM

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

PHPパフォーマンスの最適化:究極のガイドPHPパフォーマンスの最適化:究極のガイドMay 14, 2025 am 12:02 AM

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

PHP依存性噴射コンテナ:クイックスタートPHP依存性噴射コンテナ:クイックスタートMay 13, 2025 am 12:11 AM

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

PHPの依存噴射対サービスロケーターPHPの依存噴射対サービスロケーターMay 13, 2025 am 12:10 AM

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

PHPパフォーマンス最適化戦略。PHPパフォーマンス最適化戦略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPメールの検証:電子メールが正しく送信されるようにしますPHPメールの検証:電子メールが正しく送信されるようにしますMay 13, 2025 am 12:06 AM

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール