2011-06-30 6 views
3

ファイルパスが堅牢であることを確認しようとしています。多くの場合、ハードコーディングパスが悲惨なものになることは誰もが知っています。参照パスに関する一般的なルールはありますか?主に$ _SERVER ['DOCUMENT_ROOT']を超える参照に関するものです。PHPディレクトリの経験則は?

私は../../(x100000)していますが、目立たずに見え、きれいな方法があることを望んでいました。

おかげ

+0

['realpath()'](http://php.net/manual/en/function.realpath.php)は、相対パスを絶対パスに変換することができます。 – hakre

答えて

0

私は通常行う実行中のスクリプトの現在のディレクトリを取得するには、次の

str_replace('//', '/', str_replace('\\', '/', dirname(__FILE__) . '/')); 

これは少しハックですが、それは信頼性の高い私の知る限りです。

しかし、私は(あなたがそれらを使用する場合)は、Windows UNC pathsでは動作しないだろうと思い...

+0

'basename(getcwd());' ... – Neal

+0

'basename(__ FILE __)'はうまく動作しないでしょうか? – Bojangles

+0

@JamWafflesファイル名ではなくパスにする必要があります... __FILE__には、ファイルのフルパスとファイル名が含まれています。 – AlexV

0

は(悪名高いウェル相対パスを処理する)CodeIgniterのフレームワークからのレッスンを受けます。

インデックスファイル内のコードを見てみましょう:

https://github.com/philsturgeon/codeigniter-reactor/blob/master/index.php

あなたは、(他のものよりいくつかの優れた)このシナリオを処理するためのさまざまな方法があることがわかりますが、そのファイルにはベストプラクティスが表示されます。

+1

あなたの答えの中の関連するビットを強調表示することは役に立ちます。 –

+0

ファイルを見ましたか?コードの90%が適切なパスを決定しています。 31〜47行目と201行目を無視してください。 – Swift

+1

もちろん、私はCIを毎日使用しています。うんざりする必要はありません。私はちょうど解決策を他の場所に延期するのではなく、関連する部分を指摘することで改善できると思います。 OPは相対パスを使用しています。ソース内のすべての定数は絶対パスを定義するために、特定のファイルまたはディレクトリとの相対性によって定義されます。アプリケーションの定義方法やアプリケーションでの使用方法を強調表示することがあります。 –

2

現在の作業ディレクトリを取得するには:getcwd();

currectディレクトリ名を取得するには:basename(getcwd());

関連する問題