PHPのパス問題の解決策
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 でパスがどのように定義されているかを参照することもできます。
これは変更に応じて変更されない定型的な計画です。より良い計画がある場合は、お気軽に議論してください。わからないことがあれば、お気軽にお尋ねください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
