Mac OSでEclipseを使用してPHP Webサイトを開発しています。PHPプロジェクトでインクルードファイルと相対パスを扱う方法
私は、組み込み文を扱う適切な方法が何であるか知りたい。
私は主な 'lib'スクリプトであるphpファイルを持っています。このファイルは、他のファイル、throughtコマンドにアクセスします。 includeの相対パスは現在のスクリプトではなく、エントリポイントのスクリプトに基づいているため、問題はこのサブファイルを参照する方法です。
したがって、mainlib.phpファイルがあり、sublib.phpファイルにアクセスしています。
Project Root: [libs] mainlib.php sublib.php [subdir] entryPointB.php entrypointA.php
私はmainlib.phpに含める「sublib.php」の文章を入れたいので、私は唯一の私はそれを必要とするたびに、両方を含むmainlib.phpの代わりを含めることができます:それはそのようなものになるだろう。 (このサンプルでは2つだけのファイルですが、そこに私の実際のプロジェクトで複数のファイルになります
は私のmainlib.phpファイルがこれを含んでいるとしましょう:。
<?php include "libs/sublib.php; ?>
mainlib.phpが呼び出されたときにそれが動作しますentryPointA.phpから、しかしEntryPointBから呼び出された場合に失敗します
をmainlib.phpが含まれている場合:。
<?php include "../libs/sublib.php; ?>
それはEntryPointB.phpに動作しますが、entrypointA.phpに失敗します。
どうすればこの問題を解決できますか?私が試したかについて考え
いくつかの可能性:
- 絶対パスを使用するには - 私は生産にそれをアップロードされたファイルを毎回変更する必要がありますので、良い解決策Won`t。
- パスをインクルードするために$ _SERVER ['DOCUMENT_ROOT']を先頭に追加 - Macでは/ Library/WebServer/Documentsを返しましたが、私のサイトはUserFolder/Sites/MySiteNameにあります。
- ディレクトリ取得
__DIR__
- プロジェクトルートではなくエントリポイントファイルを返すため、動作しません。 - グローバル設定 - グローバル変数にハードコードされたルートパスを置くことを考えました。アイデアはグローバルスクリプトでこの変数を定義することになり、プロダクションではこのスクリプトを更新するだけです。しかし、同じ問題が残っていますが、パスに問題がなければこのスクリプトをどのように参照するのですか?
使用を[ '__DIR__'](http://php.net/manual/en/language.constants.predefined.php)と[' dirnameの() '](http://php.net/manual/en/function.dirname.php)を使って相対パスから絶対パスを構築します。 – axiac
これは、環境設定(迷惑メールやドッカーなど)のような概念があるため、これらの相違を処理できるようにしています(または仮想化の場合はそれを持たない)。 –
これはチェックしましたか?<?php include "/libs/sublib.php;?>'? –