場合によっては$_SERVER['DOCUMENT_ROOT']
が末尾にスラッシュを返します。他の環境ではそうではありません。これはどこで指定できますか?
答えて
$_SERVER['DOCUMENT_ROOT']
に最後にスラッシュが含まれているかどうかを前もって言い表すことはできません。
通常、正しく構成されている場合はではなく、にスラッシュが含まれています。 Ubuntuでは(他のUNIXと同様に)、ディレクトリに正しく書き込まれたパスには、最後に/
がありません。たとえば、Windowsの場合、apacheは設定されていれば起動を拒否します。 UNIXでは、Apacheはそれほど厄介ではなく、末尾にスラッシュをつけることができます。
ルートディレクトリ(/
)をドキュメントルートにする場合は例外が1つあります。このケースのために、後にスラッシュが含まれているかどうかは事前に言えません。
いずれにしても、httpd構成ファイルに書き込まれたように末尾にスラッシュを付けたものも含めて、DocumentRoot
directiveの値を含んでいます。 PHPはApacheの値を引き継ぎます。実際のドキュメントルートを取得するには、コンフィギュレーションファイルまたはPHPコードのいずれかにある場合は、を使用し、最後に条件付きでスラッシュ(または削除)を追加します。
情報が本当に助けてくれてありがとう、私は同じ問題を解決するために 'Real_Path'を使いました – Hitesh
ウェブルートがテールスラッシュの有無にかかわらず定義されている場合は、サーバーの設定に依存すると思います。これがすべてのシステムで等しいことを単に確認してください。
ApacheのドキュメントのServerRoot-Directiveも参照してください。
コマンドラインや単体テストでもうまく動作するので、私は現在のディレクトリをdocrootよりも使用する傾向があります。私はWordpressのソースで最初にそれを見て、非常にそれが好き、それは「../」の繰り返しの多くにつながることができます
require_once($_SERVER['DOCUMENT_ROOT'].'/../constants.php');
:
require_once(dirname(__FILE__).'/../../../../constants.php');
むしろより:私のようなものを使用する傾向があります。
P.S. FILEは現在のファイルであり、dirnameは/something.phpを最後から削除し、現在のファイルを含むディレクトリのパスを残します。あなたが最後のスラッシュが
'/' は常に存在していることを確認するために、次のように行うことができます
。トリム([ 'DOCUMENT_ROOT'] $ _SERVERを、 '/')。 '/'
require_once('/'.trim($_SERVER['DOCUMENT_ROOT'], '/').'/'.'constants.php');
ハクの答えが正しいです。私は、異なる状況、コンソールスクリプト、またはWebサーバーでincludeを使用しようとしました。私の最善の策はDOCUMENT_ROOTで始まる絶対パスを使用することでした。 しかし、私はまだその後ろのスラッシュのために立ち往生していました。ここ は良い解決策になると思われるものである:
のinclude_once のgetenv( "DOCUMENT_ROOT")「./ WEB-INF /クラスは
その後からPHPのtest.phpをしてスクリプトを起動します。バッチスクリプトを実行し、DOCUMENT_ROOT env変数に値を入力します。スラッシュの後ろにスラッシュを付けます。 Apacheからロードされたとき、getenvは既に埋め込まれています。
PHPエンジンは././で管理でき、./と同じことを伝えます。同じように、htdocs./にはhtdocs /(ウィンドウ下)があります。
古い質問ですが、私はこれを解決する方法を私に与えてくれたので、ここで私の解決方法を追加します。 $ _SERVER ['DOCUMENT_ROOT']で定数(ROOTPATH)を定義し、末尾にスラッシュ(DIRECTORY_SEPARATOR)が付いていることを確認します。
define('ROOTPATH', (ctype_alnum(substr($_SERVER['DOCUMENT_ROOT'], -1)) ? $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR : $_SERVER['DOCUMENT_ROOT']));
これは(私は特別な文字で終わる多くのフォルダ名を見て覚えていませんでした)フォルダ名の最後の文字は英数字で想定しています。 あなたは必ず末尾がないようにしたい場合は、このような何かで行くことができスラッシュ:
define('ROOTPATH', (!ctype_alnum(substr($_SERVER['DOCUMENT_ROOT'], -1)) ? substr($_SERVER['DOCUMENT_ROOT'], 0, -1) : $_SERVER['DOCUMENT_ROOT']));
平和、Moの
仮想ホストを使用する場合は、Apacheは$_SERVER['DOCUMENT_ROOT']
へのDocumentRoot
の値を書き込み、仮想ホスト。だからそこに後ろにスラッシュを書くことができます。
しかし、あなたのアプリケーションがそれに頼るべきではありませんし、支援なしスラッシュをtrailngの有無を判断しなければならないので、別のホスティング事業者が異なっこのparamenterを扱うので、それは良い決断ではありません。
- 1. $ _SERVER ['DOCUMENT_ROOT']セッションヘッダー '場所:'でパスを指定する方法
- 2. PHPヘッダー所在地:だから、$ _SERVER対../location [DOCUMENT_ROOT] /場所
- 3. PHP $ _SERVER ['DOCUMENT_ROOT']とhtaccess?
- 4. php $ _SERVER ['DOCUMENT_ROOT']問題
- 5. $ _SERVER ['DOCUMENT_ROOT']
- 6. PHPファイルディレクトリ - $ _SERVER ['DOCUMENT_ROOT']の親フォルダ
- 7. PHP $ _SERVER ['DOCUMENT_ROOT']はC#で同等です
- 8. ローカルApache Webサーバーの$ _SERVER [DOCUMENT_ROOT]
- 9. .htaccessファイルの$ _SERVER ['DOCUMENT_ROOT']値へのアクセス
- 10. /../ PHPの後['DOCUMENT_ROOT']
- 11. Rails map.connect route with trailing slash not:id to controller(Rails 2.3.5)
- 12. PHP環境定数:SITE_HTMLROOT対DOCUMENT_ROOT
- 13. coldfusionで$ _SERVER ['DOCUMENT_ROOT']を取得するには? LAMPで
- 14. $ _SERVER ["DOCUMENT_ROOT"]の仮想ドキュメントルートの代わりにドキュメントルートを使用
- 15. $ _SERVER [ 'DOCUMENT_ROOT']と$ _SERVER [ 'HTTP_HOST']、いつかのようにいつか他の
- 16. Apache .htaccessを使用してPHP $ _SERVER値($ _SERVER ['something'])を設定する
- 17. DockerでPHP $ _SERVER変数を設定するには?
- 18. wpマルチサイトに$ _SERVER ['DOCUMENT_ROOT']を使用する方法
- 19. PHP $ _SERVER ['DOCUMENT_ROOT']を必要とすると、ファイルの場所のみを使用不可にする方法が含まれていますか?
- 20. アップロードパスと$ _SERVER ['DOCUMENT_ROOT']がcodeigniterでcpanelで動作しない
- 21. フィットネス:CLASSPATH_PROPERTYを設定する場所は?
- 22. hibernate.id.new_generator_mappingsプロパティを設定する場所は?
- 23. ゲームアイコンを設定する場所は?
- 24. PHPヘッダー(場所:)ルートディレクトリでリダイレクト
- 25. $ _SERVER ['DOCUMENT_ROOT']の値を.htaccess経由で変更します。
- 26. Nginx、場所、エイリアス、PHP
- 27. $ _SERVER ["SERVER_NAME"]と$ _SERVER ["DOCUMENT_ROOT"]は常に同じディレクトリを対象としていますか?
- 28. Djangoテンプレートの場所を設定する
- 29. アプリケーション設定を保存する場所
- 30. HBase JVMオプションを設定する場所
*指定することができますか?どのようなサーバーが異なる環境で動作していますか? –
'$ _SERVER [ 'DOCUMENT_ROOT'] = sprintfのは( '%sの/'、RTRIM($ _、SERVER [ 'DOCUMENT_ROOT']、 '/'));' –
@AlixAxelは、RTRIMはまた、潜在的空白をトリムではないでしょうか?ドキュメントルートに空白がある場合はどうなりますか? – CMCDragonkai