2013-04-05 13 views
7

Prima di tutto, Mac OS X non è il mio sistema operativo nativo, ma dal momento che mi trovo a mio agio in Ubuntu, è stata per la maggior parte una transizione facile.case sensitive su Mac per file_exists()?

Essendo che è basato su Unix, ho avuto l'impressione che questo sistema operativo fosse sensibile al maiuscolo/minuscolo, ma la funzione file_exists() sta dicendo diversamente.

Nel mio file htdocs, ho questi 2 file:

test.php

MyFiLeWiThMiXeDCaSe.php

In test.php, ho questo codice:

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

// ouputs: exists 

Qualcuno sa come/perché questo sta accadendo? Questo sta causando un problema perché quando distribuiamo un codice come questo su un SO Linux, file_exists() restituisce false.

BTW: Sto usando MAMP PRO come server web locale.

+3

Non è una risposta alla domanda corrente, ma è facile creare una partizione aggiuntiva con un file system con distinzione tra maiuscole e minuscole e montarla in quanto il file system predefinito su osx consente il ridimensionamento. Metti i tuoi progetti web su quella partizione per evitare di creare bug/problemi correlati alla distinzione tra maiuscole e minuscole. Fai attenzione ai tuoi percorsi Apache se decidi di creare un link simbolico alla tua nuova partizione. –

+0

Grazie per il consiglio, sembra che se creo una partizione per la mia cartella htdocs, dovrebbe minimizzare questo problema in modo sostanziale. – Mark1inLA

+0

È possibile scrivere una versione di distinzione tra maiuscole e minuscole di file_exists(). È possibile prima ottenere l'elenco dei file della directory superiore e controllare se il file corrente è in esso con confronto tra maiuscole e minuscole. –

risposta

3

Il file system predefinito su OS X è HFS + senza distinzione tra maiuscole e minuscole.

È possibile formattare un volume come HFS + con distinzione tra maiuscole e minuscole e esistono modi (sporchi) di abilitare la distinzione tra maiuscole e minuscole per i volumi esistenti. Ma questi interromperanno il software esistente e dovresti evitare la distinzione tra maiuscole e minuscole sul volume di root.

Se è necessario un file system con distinzione tra maiuscole e minuscole per qualche motivo (ad esempio per la costruzione di Android è necessario), è possibile creare un'immagine disco formattata in modo appropriato utilizzando Utility Disco.

Si noti che il fondamento UNIX di OS X funzionerà correttamente con un file system sensibile al maiuscolo/minuscolo.

+0

Grazie per la risposta dettagliata. Se il mio programma di utilità del disco dice Format: \t Mac OS Extended (Journaled), significa che al momento non è sensibile al maiuscolo/minuscolo? – Mark1inLA

+0

Sì. I filesystem con distinzione tra maiuscole e minuscole sono espressamente indicati in Utility Disco. (Puoi crearne uno facilmente creando una nuova immagine del disco.) – nneonneo

1

Per impostazione predefinita, Mac OS X non è sensibile al maiuscolo/minuscolo, pertanto "FILE" e "file" sono due nomi per lo stesso file.

4

Nonostante sia un derivato BSD, OS X NON è sensibile al maiuscolo/minuscolo. O piuttosto i filesystem HF e HFS + non lo sono, a meno che non si scelga l'opzione case sensitive quando si formatta il disco. Questo di solito non è fatto perché molte applicazioni hanno problemi con questo (Adobe, MS, ecc.) - o almeno l'ultima volta che l'ho provato con Tiger.

Problemi correlati