2011-07-08 15 views
14

小さなPHPアプリケーションを作成しましたが、ここではファイルパスを使用する際に問題があります.Windowsではこのタイプの場所を使用するためC:\Some\Location\indexだがLinux /www/app/indexにあるので、この/を使用してパスを定義すると、この問題は/です。WindowsプラットフォームとLinuxプラットフォームの両方でDIRECTORY_SEPARATORを定義するにはどうすればよいですか?

ここでは、WindowsとLinuxの両方のプラットフォームでDIRECTORY_SEPARATORを定義します。

DEFINE('DS', DIRECTORY_SEPARATOR); 

答えて

31

PHPはすべてのOSで有効なパス区切り文字として\/の両方を受け入れます。したがって、コードに/を使用してください。

+0

ありがとう、私はいつもこの/と\のために混乱していました。 – useCase

+1

すべてのOSは、http://stackoverflow.com/questions/625332/is-using-the-directory-separator-constant-neccessaryによると、よりクロスプラットフォームなので、ウィンドウズとnixではありません。古典的な使用:セパレーターとして。例えば、 http://edward.de.leau.net/is-the-php-directory_separator-constant-really-needed-20130121.html – edelwater

+1

@edelwater:サポートされていない11yo OSの要件に従ってコードを書く必要はありません。今日は2013年です。あなたが今日から何かを持っているとき - それを議論することを歓迎してください。しかし、古典的なmacosを参照してちょうどナンセンス – zerkms

4

たぶん、それはすでにあなたのスクリプトで定義されていますPHP Predefined Constants

を参照してください、それはあなたが短い定数を定義書くことができる利便性のために、任意の値

14

を持っているかどうかを確認し、DIRECTORY_SEPARATORをエコーし​​てみてくださいパスを次のように記述します。

あなたの質問は分かりませんか?

3

PHPはあなたのシステムに関係なく、パス区切り文字として '\'と '/'を理解しています。私はすべてのコードで '/'(UNIXの方法)を使用することを好みます。あなたは窓のボックスにしていると完全修飾窓/ DOSパスを提供する必要がある場合、私はこの単純な、非破壊的機能を持っています

function dosPath($path){ 
    return str_replace('/', '\\', $path); 
} 

例:

$drive = 'C:'; 
$path = '/tmp/uploads'; 

echo dosPath($drive.$path); 
echo dosPath($path); 
0

Windowsが受け入れスラッシュはほとんどの場合スラッシュですので、それらを使うことができます。あなたは混合物を使用することもでき、それは不平を言うことはありません。

あなたの単体テスト・スイートがLinuxでも動作することを確認してください!

+0

それは吸う。 –

関連する問題