2012-10-15 9 views
7

Pracuję nad projektem Symfony w środowisku Win7/Apache 2.2/ZendStudio i mam problemy z poprawnym działaniem moich plików.Błąd "Odmowa dostępu" podczas wywoływania "zmiany nazwy" podczas przesyłania plików w Symfony

Moim celem jest umożliwienie użytkownikowi utworzenia nowego obiektu, który może zawierać dowolną liczbę "dokumentów" (na podstawie artykułu znalezionego pod numerem http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html). Mam typ formularza zawierający jedno pole typu "kolekcja" (w oparciu o artykuł znaleziony pod adresem http://symfony.com/doc/current/cookbook/form/form_collections.html). Jak na razie dobrze. Poprzez jQuery mogę dowolnie dodawać wiele formularzy jako podformularzy, które działają dobrze. Ale kiedy przedstawić moją formę, bardzo często (! Choć nie zawsze) pojawia się następujący wyjątek:

Warning: rename(C:/Programming/Servers/Apache2.2/htdocs/Symfony/app/cache/dev/doctrine/orm/Proxies\__CG__MyMainBundleEntityRecruiter.php.507bf02e30df69.85090364,C:/Programming/Servers/Apache2.2/htdocs/Symfony/app/cache/dev/doctrine/orm/Proxies\__CG__MyMainBundleEntityLecture.php): Zugriff verweigert (code: 5) in C:\Programming\Servers\Apache2.2\htdocs\Symfony\vendor\doctrine\orm\lib\Doctrine\ORM\Proxy\ProxyFactory.php line 194

Zugriff verweigert jest niemieckim Odmowa dostępu. Co dziwne, wydaje się, że pliki mają zmienioną nazwę i są zapisywane we właściwej lokalizacji.

Dlaczego otrzymuję ten wyjątek, czy ma on coś wspólnego z moim środowiskiem i jak mogę to naprawić? Myślę, że ten problem jest związany z Symfony Warning : rename (../app/cache/dev , ../app/cache/dev_old) : Access Denied . (Code : 5), ale nie do końca wiadomo, czy jest taki sam, jak w innym kontekście. Ja także napotykam problem opisany w tym łączu.

Z góry dziękuję.

+0

mam ten sam problem. :-( – darkangel

Odpowiedz

7

Znalazłem to patrząc na samej odpowiedzi, wydaje się być Windows + doktryny WYDANIE

Doctrine Ticket with more detailed info

TLDR: Zasadniczo proxy próbuje zmienić nazwę pliku ów nadal używany, działa w Linuksie, ale nie zawsze w oknach.

+0

Ktoś z pomysłami rezolucji? Widziałem w tym poście, że jest on poprawiony w Doctrine 2.5, ale kiedy go uruchomię (w Symfony 2.6.1) nadal dostaję błąd. Może zaktualizuję Symfony, czy co? –

+0

Uzgodniono, że naprawiono 2.5, ale nadal otrzymuję to w Doctrine 2.5.4 w XAMPP i Windows 10 x64 ... :( – Egg

4

Ostatnio omawiałem ten sam problem. Naprawdę nie mam pojęcia, dlaczego tak się dzieje, ale problem pochodzi z etapu procesu, w którym Doctrine próbuje generować klasy proxy.

W moim pliku config.yml, w sekcji ORM konfiguracji Doctrine, zmieniłem wartość auto_generate_proxy_classes z %kernel.debug% na false. Grałem z nią przez jakiś czas od czasu wprowadzenia zmian i od tego czasu nie udało się odtworzyć problemu.

0

Przejdź do pliku, który zmienia nazwę pliku, a następnie zastąpić go z funkcji okna kompatybilny przemianowania

private function renameWindowsCompatible($oldfile,$newfile) { 
    try { 
     rename($oldfile,$newfile); 
    } catch(\Exception $e) { 
     if (copy($oldfile,$newfile)) { 
      unlink($oldfile); 
      return TRUE; 
     } 
     return FALSE; 
    } 
    return TRUE; 
} 
+0

To jest tylko tymczasowa naprawa dla dostawcy, nie wiem, czy doktryna rozważy to aktualizacja wkrótce – PauAI

Powiązane problemy