2013-04-05 5 views
7

Zunächst einmal ist Mac OS X nicht mein Betriebssystem, aber da ich mit Ubuntu vertraut bin, war es größtenteils ein einfacher Übergang.Groß-/Kleinschreibung bei Mac für file_exists()?

Da es Unix-basiert ist, hatte ich den Eindruck, dass dies die Groß-/Kleinschreibung war, aber die file_exists() Funktion sagt etwas anderes.

In meiner htdocs Datei, ich habe diese 2-Dateien:

test.php

MyFiLeWiThMiXeDCaSe.php

In test.php, ich habe diesen Code:

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

// ouputs: exists 

Wer weiß wie/warum das passiert? Dies führt zu einem Problem, da bei falscher Bereitstellung von Code an ein Linux-Betriebssystem den Wert false zurückgibt.

BTW: Ich benutze MAMP PRO als lokaler Webserver.

+3

keine Antwort auf Ihre aktuelle Frage, aber es ist einfach eine kleine zusätzliche Partition, die Groß- und Kleinschreibung Dateisystem hat zu erstellen und dass montieren, da das Standard-Dateisystem auf osx Ändern der Größe ermöglicht. Platzieren Sie Ihre Webprojekte auf dieser Partition, um zu verhindern, dass Fehler/Probleme in Bezug auf die Groß- und Kleinschreibung entstehen. Achte nur auf deine Apache-Pfade, wenn du einen Symlink zu deiner neuen Partition erstellst. –

+0

Vielen Dank für den Rat, es klingt wie, wenn ich eine Partition für meine htdocs-Ordner erstellen, sollte es dieses Problem wesentlich zu minimieren. – Mark1inLA

+0

Sie können selbst eine Case-Sensitivity-Version von file_exists() schreiben. Sie können zuerst die Dateiliste des übergeordneten Verzeichnisses abrufen und prüfen, ob die aktuelle Datei darin enthalten ist, wobei die Groß- und Kleinschreibung berücksichtigt wird. –

Antwort

3

Das Standard-Dateisystem unter OS X unterscheidet HFS + von Groß- und Kleinschreibung.

Sie können ein Volume so formatieren, dass die Groß-/Kleinschreibung beachtet wird, und es gibt (schmutzige) Möglichkeiten, die Groß-/Kleinschreibung für vorhandene Volumes zu aktivieren. Dadurch wird jedoch die vorhandene Software zerstört, und Sie sollten Groß- und Kleinschreibung auf Ihrem Root-Volume vermeiden.

Wenn Sie aus irgendeinem Grund ein Dateisystem benötigen, bei dem die Groß- und Kleinschreibung beachtet wird (z. B. wenn Android dafür erforderlich ist), können Sie mit dem Festplatten-Dienstprogramm ein entsprechend formatiertes Disk-Image erstellen.

Beachten Sie, dass die UNIX-Foundation von OS X problemlos mit einem Dateisystem funktioniert, bei dem die Groß-/Kleinschreibung beachtet wird.

+0

Danke für die ausführliche Antwort. Wenn das Festplattendienstprogramm Format lautet: \t Mac OS Extended (Journaled), heißt das, dass die Groß-/Kleinschreibung derzeit nicht beachtet wird? – Mark1inLA

+0

Ja. Groß-/Kleinschreibung-abhängige Dateisysteme werden speziell im Festplatten-Dienstprogramm angegeben. (Sie können einen einfach erstellen, indem Sie ein neues Festplatten-Image erstellen.) – nneonneo

1

Standardmäßig unterscheidet Mac OS X nicht zwischen Groß- und Kleinschreibung, daher sind "FILE" und "file" zwei Namen für die gleiche Datei.

4

Trotz BSD-Derivat OS OS ist nicht Groß-und Kleinschreibung. Oder eher HFs und HFS + Dateisysteme sind nicht, es sei denn, Sie wählen die Groß- und Kleinschreibung bei der Formatierung Ihrer Festplatte. Dies wird normalerweise nicht gemacht, weil viele Anwendungen Probleme damit haben (Adobe, MS, etc.) - oder zumindest das letzte Mal, als ich es unter Tiger probiert habe.