検索
ホームページphp教程php手册PHPのパス問題の解決策

PHPのパス問題の解決策

Jun 13, 2016 pm 12:44 PM
perlphpそしてについて含む導入解決パス


PHPのパス問題の解決策 はじめに:
PERL と PHP のインクルード パスは、主にオペレーティング システムと WEB サーバーに関連する常に難しい問題です。このパスの問題を非常にインテリジェントに解決することは不可能です。 PERL と比較すると、PHP のパスははるかに優れており、解決がはるかに簡単です。これは、特定のステートメントで絶対パスを使用する必要がある PERL とは異なり、PHP の相対パスは PHP プログラムのあらゆる場面で使用できるため、移植が非常に複雑になります。 。

これに基づいて、以下に説明するように、PHP で絶対確実なソリューションを設計しました。

原則:
相対パスを使用しますが、相対パス内では絶対パスを使用します (少し複雑ですが、後で詳しく説明します)。第一に、移植性が保証され、第二に、簡単に変更できます。 、定式化され、明確に構造化されているため、簡単に拡張できます。

手順の詳細な説明:
まず、プログラムのルート ディレクトリを決定します。ただし、一般的には、それが WEB サーバーの仮想ディレクトリではないことに注意してください。このディレクトリ下のサブディレクトリは相対的なパスであり、URL 下のディレクトリの仮想サブディレクトリと同じです。
2. 定義したプログラムのルート ディレクトリの下の各サブディレクトリに settings.php を作成し (必要に応じて、実際にはすべてではありません)、その中に変数または定数を定義します (スコープが比較的大きいため、定数の方が適しています) ) (APPROOT など) ですが、この APPROOT は絶対パスではなく、指定したプログラムのルート ディレクトリを基準としたディレクトリの相対パスです。
3. このディレクトリ内のすべてのプログラム エントリ ファイル (つまり、他のファイルを含む最初のファイル、またはブラウザでの直接参照を許可するファイル) に、 require_once('settings.php ') を記述します。 ; ただし、この文をすべてのインクルード ファイルに追加しないことをお勧めします。実際には、 if(!define(APPROOT))define(APPROOT, '. ./..' と記述できるため、追加することができます)。 ); このタイプのステートメントは再定義を防ぎます。
4. 直接的または間接的に他のファイルをインクルードする場合は、include(APPROOT.$path); と記述できます。$path は、指定したプログラム ルート ディレクトリを基準としたインクルード ファイルの絶対パスです。パス。

原則:
決定されたプログラムのルート ディレクトリは相対パスですが、特定のディレクトリの場所はそのルート ディレクトリを基準とした絶対パスです。この 2 つの組み合わせが、特定のファイルの相対パスになります。プログラムのルート ディレクトリへ。たとえば、ディレクトリ c:wwwrootapp は指定したプログラムのルート ディレクトリであり、c:wwwrootappaindex.php と c:wwwrootappbinc.php という 2 つのファイルがあります。サブディレクトリ a の場合、APPROOT は '..'、プログラム ルート ディレクトリの場合、inc.php の絶対パスは $path='/b/inc.php' で、この 2 つの組み合わせは '../b /inc.php」。 inc.phpをindex.phpに含めたい場合はinclude('../b/inc.php');と書かないといけないのですが、このパスは先ほど結合したAPPROOT.$pathではないでしょうか?


結論:
上記の処理の後、すべてのパスは完全に均一になります。少し冗長なのは、各ディレクトリで APPROOT を定義する必要があることですが、このディレクトリのみが必要であるということです。各ディレクトリに定義する必要があります。 settings.php に一度定義するだけで十分です。プログラム全体に、index.php などのエントリ ファイルが 1 つだけあり、他のすべてのファイルがこの唯一のエントリ ファイルに直接または間接的に含まれている場合は、index.php が存在するディレクトリに settings.php を追加するだけで済みます。一度だけでOKです。 Delphi プロジェクトを実行し、プロジェクト ファイルを研究した友人がいる場合は、プログラムにメイン エントリ ファイルが 1 つしかないという先ほど述べた状況が Delphi プロジェクトとよく似ていることがわかるでしょう。Delphi にはメイン プログラム ファイル (dpr) が 1 つしかないためです。 file) 、残りはすべてユニット ファイルまたはリソース ファイルであり、単独で実行することはできません。 PHP では、この状況が発生した場合、APPROOT を 1 回定義し、メイン プログラム ファイルの最初の文に require_once('settings.php'); を記述するだけで、後続のすべてのインクルードを含めることができます (APPROOT.$ パス)。 ; 、この「プログラムのルートディレクトリからの相対ファイルの絶対パスを含む」$path を書かない限り、問題がないことは保証されています。

私はこの方法を複数回使用しましたが、結果は非常に良好です。また、JSP の WEB-INFO でパスがどのように定義されているかを参照することもできます。

これは変更に応じて変更されない定型的な計画です。より良い計画がある場合は、お気軽に議論してください。わからないことがあれば、お気軽にお尋ねください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境