2011-09-28 10 views
17

Używam CakePHP 2.0 RC-1. Po sprawdzeniu projektu z SVN aplikacja zaczyna narzekać, że nie może zapisywać plików pamięci podręcznej w katalogu tmp/cache. Ponieważ jest to lokalny, wiem, że katalog jest zapisywalny i mogę CLEARLY zobaczyć, że katalogi są nawet wypełnione plikami, więc błąd jest nieco dziwny.CakePHP 2.0 - Cake nie mógł zapisać do pamięci podręcznej plików

Oto niektóre z błędów, jakie napotykają:

_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] 

Brak błędu ?! WTH?

Teraz, gdy patrzę w pliku FileEngine, na linii 127 czytamy:

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

Zastępując „C” z „w”, bez napotkania błędu i wszystko działa tak jak powinno. Ale nie powinno być konieczne modyfikowanie podstawowych bibliotek Cake w celu obejścia tego problemu. Powtórzę, że na moim drugim komputerze działa to zgodnie z przeznaczeniem, bez edytowania głównej biblioteki. Oba używają systemu operacyjnego Windows, a uprawnienia do odczytu/zapisu do folderu tmp/cache-folder są dokładnie takie same.

Edycja: Oto strona, która doświadcza wyjść błędach Mam lokalnie

Przykład witryny znaleziony przez Googling. Nie moja strona: http://www.12h30.net/credit/

Jakieś sugestie?

Aktualizacja: Oto dlaczego: Spowodowane jest to jeśli masz PHP-wersję, która jest zbyt niska, przed 5.2.6, zgodnie z wytycznymi „api55” w komentarzach. Dziękuję za odpowiedź. Mam nadzieję, że to ci pomoże.

+2

jaka wersja php masz? pamiętajcie, że 2.0 nadal znajduje się w fazie RC, więc może mieć tego rodzaju błędy ... dla trybu c lub c + POTRZEBUJESZ mieć php 5.2.6 lub nowszy, jeśli nie, to nie rozpozna tego trybu – api55

Odpowiedz

1

Daj sobie prawo CHMOD (776 działa dobrze dla mnie) do app/tmp

23

Cóż, w moim przypadku, gdy sprawdziłem moją aplikację, to nie miał folder /tmp. Następnie stworzyłem strukturę (/tmp/cache/models, /tmp/cache/persistent) i wszystko działało dobrze. Zdarzyło mi się, że git może ignorować puste foldery, więc nie zostały utworzone.

+1

Rzeczywiście, wersja systemy kontroli często ignorują puste foldery. – Alfabravo

+0

To jest odpowiednia odpowiedź, sprawdzone dla mnie. –

17

Miałem podobny problem, ponieważ chciałem -R www do katalogu app/tmp, aby Cake działał "poprawnie", nie dając wszystkim przywilejów zapisu. Wygląda na to, że podczas programowania jedynym sposobem korzystania z konsoli i internetu jest nadanie wszystkim uprawnień do zapisu lub dodanie się do grupy www.

proste rozwiązanie:

chmod -R 777 app/tmp

lub

chown -R nazwa app/tmp

podczas korzystania z konsoli i

chown -R www app/tmp

podczas korzystania z internetu

+0

uratowałeś mnie ... –

+9

chmod 777 nigdy nie jest odpowiedzią na wszystko, jest to całkowicie błędne i niepewne! –

0

do okien użytkowników z tego samego błędu/ostrzeżenia: Upewnij się uruchomić wiersz poleceń w trybie podwyższonej;)

Powiązane problemy