2013-04-05 19 views
7

まず、Mac OS Xは私のネイティブオペレーティングシステムではありませんが、私はUbuntuで快適であるため、ほとんどの場合、簡単に移行しています。Macではfile_exists()の大文字と小文字が区別されますか?

UNIXベースであるため、私はこのOSが大文字と小文字を区別していたという印象を受けましたが、別の意味ではfile_exists()という機能があります。私のhtdocsファイルで

、私はこれらの2つのファイルがあります。

if(file_exists('myfilewithmixedcase.php')) { 
    echo 'exists'; 
} else { 
    echo 'doesnt exist'; 
} 

// ouputs: exists 

:test.phpをに

test.phpを

MyFiLeWiThMiXeDCaSe.php

を、私はこのコードを持っています誰がどのように/なぜこれが起こっているのか知っていますか?これは、Linux OSにこのようなコードをデプロイすると、file_exists()がfalseを返すため、問題を引き起こしています。

私はMAMP PROをローカルWebサーバーとして使用しています。

+3

あなたの現在の質問に答えることはできませんが、大文字と小文字を区別するファイルシステムを持ち、osxのデフォルトのファイルシステムでサイズ変更が可能なのでマウントするための小さな追加パーティションを作成するのは簡単です。大文字と小文字を区別するバグや問題が発生しないように、Webプロジェクトをそのパーティションに配置します。新しいパーティションへのシンボリックリンクを作成する場合は、Apacheのパスに注意してください。 –

+0

アドバイスをありがとう、私はhtdocsフォルダのパーティションを作成するように聞こえる、この問題を大幅に最小限に抑える必要があります。 – Mark1inLA

+0

file_exists()の大文字と小文字を区別するバージョンをあなた自身で書くことができます。最初に親ディレクトリのファイルリストを取得し、大文字と小文字を区別して現在のファイルが存在するかどうかを調べることができます。 –

答えて

3

OS Xのデフォルトのファイルシステムは、大文字と小文字を区別しないHFS +です。

ボリュームを大文字と小文字を区別するHFS +としてフォーマットすることができます。また、既存のボリュームの大文字と小文字を区別する方法を使用することもできます。しかし、これらは既存のソフトウェアを破壊するので、ルートボリュームで大文字と小文字を区別しないようにする必要があります。

何らかの理由で大文字と小文字が区別されるファイルシステムが必要な場合(Androidのインストールなど)、ディスクユーティリティを使用して適切なフォーマットのディスクイメージを作成できます。

OS XのUNIX基盤は、大文字と小文字を区別するファイルシステムでうまく動作することに注意してください。

+0

詳細な応答をありがとう。私のディスクユーティリティがFormat:\t Mac OS Extended(Journaled)と書かれているのであれば、それは現在大文字と小文字を区別していませんか? – Mark1inLA

+0

はい。大文字と小文字を区別するファイルシステムは、ディスクユーティリティで特に指定されています。 (新しいディスクイメージを作成すると簡単に作成できます)。 – nneonneo

1

デフォルトでは、Mac OS Xでは大文字と小文字が区別されないため、「FILE」と「file」は同じファイルの2つの名前です。

4

BSDの派生OSであるにもかかわらず、OS Xでは大文字と小文字は区別されません。ディスクをフォーマットするときに大文字と小文字を区別するオプションを選択しない限り、むしろHFとHFS +ファイルシステムはそうではありません。これは通常、多くのアプリケーションでこれに問題があるため(Adobe、MSなど)、または少なくともTigerの下で試したときに行ったためです。