2011-09-28 7 views
17

Sto utilizzando CakePHP 2.0 RC-1. Dopo aver verificato il progetto da SVN, l'applicazione inizia a lamentarsi del fatto che non è in grado di scrivere i file di cache nella directory tmp/cache. Dato che questo è locale, so che la directory è scrivibile e posso vedere CHIARAMENTE che le directory sono persino piene di file, quindi l'errore è un po 'strano.CakePHP 2.0 - Cake non è stato in grado di scrivere nella cache dei file

Ecco alcuni degli errori che ho incontrato:

_cake_core_ cache was unable to write 'cake_dev_nb' to File cache 

fopen(c:\cake\app\tmp\cache\models\cake_model_default_media) [function.fopen]: failed to open stream: No error [CORE\Cake\Cache\Engine\FileEngine.php, line 127] 

Nessun errore ?! Wth?

Ora, se guardo nel file FileEngine, alla riga 127 si legge:

if (!$handle = fopen($this->_File->getPathName(), 'c')) { 
      return false; 
} 

Sostituendo la "c" con la "w", viene rilevato alcun errore e tutto funziona come dovrebbe. Ma non dovrebbe essere necessario modificare le librerie principali di Cake per risolvere questo problema. Permettetemi di ripetere che sul mio altro computer questo funziona come previsto, senza modificare la libreria principale. Entrambi utilizzano il sistema operativo Windows ei diritti di lettura/scrittura sulla cartella tmp/cache sono esattamente gli stessi.

Edit: Ecco un sito che sperimenta le uscite di errore che sto avendo a livello locale

sito Esempio trovato da usare Google. Non è il mio sito: http://www.12h30.net/credit/

Qualche suggerimento?

Aggiornamento: Ecco perché: Questo è causato se si dispone di una versione di PHP troppo bassa, prima di 5.2.6, come indicato da "api55" nei commenti. Grazie per la risposta. Spero che questo ti aiuti anche tu.

+2

quale versione di php hai? ricorda che 2.0 è ancora in fase RC, quindi potrebbe avere questo tipo di errori ... per la modalità c o c + hai bisogno di avere php 5.2.6 o successivo se non lo fai non riconoscerà quella modalità – api55

risposta

1

Basta dare il giusto CHMOD (776 funziona bene per me) per app/tmp

23

Beh, nel mio caso, quando ho controllato la mia app, non aveva la cartella /tmp. Quindi ho creato la struttura (/tmp/cache/models, /tmp/cache/persistent) e tutto ha funzionato bene. Questo mi è successo, forse git ignora le cartelle vuote, quindi non sono state create.

+1

Infatti, versione i sistemi di controllo spesso ignorano le cartelle vuote. – Alfabravo

+0

Questa è la risposta giusta, ha funzionato per me. –

17

Ho avuto un problema simile, era perché avevo chown -R www nella directory app/tmp per far funzionare Cake correttamente "senza dare a tutti i privilegi di scrittura. Sembra che durante lo sviluppo l'unico modo di usare la console e il web sia di dare a tutti i privilegi di scrittura, o di aggiungere te stesso al gruppo www.

soluzione facile:

chmod -R 777 app/tmp

o

chown -R nome utente app/tmp

durante l'utilizzo della console e

chown -R www app/tmp

quando si utilizza il web

+0

mi hai salvato ... –

+9

chmod 777 non è mai la risposta a niente, questo è completamente sbagliato e insicuro! –

0

Per gli utenti Windows con lo stesso errore/avviso: assicurarsi di eseguire il prompt dei comandi in modalità elevata;)