2014-06-15 15 views
5

ja szczęśliwie pracuje daleko w moim środowisku programistycznym i nagle zaczęła się następujący błąd:PHP/Kompozytor nie może redeclare

PHP Fatal error: Cannot redeclare composerRequire7a368ac394ae1d2e857becf2a235ebaa() (previously declared in [APP_ROOT]/vendor/composer/autoload_real.php:56) in [APP_ROOT]/vendor/composer/autoload_real.php on line 59

Nie dokonano żadnych zmian mówić w zależności Kompozytor (chociaż myślę, zrobiłem zrobić composer update gdzieś w tym terminie, ale bez zmian w zależnościach/pakiety używany więc nic duży powinien być zmieniony.

Zwłaszcza, kiedy kasy repo na moim laptopie nie mam dostać ten błąd, ale jeśli git clone clean repo, a następnie composer install na mojej głównej maszynie programistycznej. to błąd. Zakładam więc, że musi mieć pochodzenie specyficzne dla maszyny, ale brakuje mi pomysłów na to, co to może być.

Każda pomoc zostanie bardzo doceniona.

Note: I'm running PHP 5.3.28 on OSX; my app uses namespacing and is PSR0 compliant


Warto też wspomnieć, że biegnę PHPUnit 4.0.17 a błąd jest wyzwalany w pierwszych etapach próby uruchomienia testów jednostkowych (nie ma znaczenia, który z testów jednostkowych) . Oto ślad stosu:

0.0009  636648 1. {main}() [APP_BASE]/vendor/phpunit/phpunit/phpunit:0 
0.0465 1423664 2. PHPUnit_TextUI_Command::main() [APP_BASE]/vendor/phpunit/phpunit/phpunit:54 
0.0465 1424280 3. PHPUnit_TextUI_Command->run() [APP_BASE]/vendor/phpunit/phpunit/src/TextUI/Command.php:132 
0.0465 1424280 4. PHPUnit_TextUI_Command->handleArguments() [APP_BASE]/vendor/phpunit/phpunit/src/TextUI/Command.php:141 
0.0674 2123344 5. PHPUnit_TextUI_Command->handleBootstrap() [APP_BASE]/vendor/phpunit/phpunit/src/TextUI/Command.php:638 
0.0681 2139872 6. PHPUnit_Util_Fileloader::checkAndLoad() [APP_BASE]/vendor/phpunit/phpunit/src/TextUI/Command.php:808 
0.0681 2140008 7. PHPUnit_Util_Fileloader::load() [APP_BASE]/vendor/phpunit/phpunit/src/Util/Fileloader.php:77 
0.0774 2144176 8. include_once('[APP_BASE]/tests/test-loader.php') [APP_BASE]/vendor/phpunit/phpunit/src/Util/Fileloader.php:93 
0.0775 2146736 9. include('[APP_BASE]/vendor/autoload.php') [APP_BASE]/tests/test-loader.php:2 
+0

Więc czym są linie 'autoload_real' w wersjach 56 i 59? – zerkms

+0

To tylko domyślny plik autoloadowy kompozytora ... Myślę, że twój byłby taki sam jak mój, ale na wypadek, gdyby nie ... linia 56 jest definicją funkcji 'function composerRequireb319f8584bff24b05e527f91a6f7f8bf ($ file)' a linia 59 jest nawiasem zamykającym dla tej funkcji, gdzie jedyną linią funkcji jest wymaganie przekazanego pliku. – ken

+0

wstaw na http://pastebin.com, proszę. I upewnij się, że patrzysz na właściwy plik - nie mam wątpliwości, że nawias zamykający może spowodować taki problem. – zerkms

Odpowiedz

2

Miałem ten problem, gdy zrobiłem kopię istniejącego katalogu projektu i próbowałem uruchomić phpunit w nowym katalogu. W końcu doszedłem do wniosku, że kiedy uruchomiłem phpunit, kończyło się to na starym katalogu. Pobiegłem to:

which phpunit

i zobaczył, że został uruchomiony z mojego kompozytora katalogu dostawcy:

/home/vagrant/Code/MYOLDPROJECT/api/vendor/bin/phpunit

Pobiegłem PHPUnit z nowego katalogu i problem zniknął:

/home/vagrant/Code/mynewproject/api/vendor/bin/phpunit

+0

cieszę się, że to załatwisz. dla mnie problem był inny, ale minęło wystarczająco dużo czasu. Obawiam się, że nie pamiętam wystarczająco dużo szczegółów. – ken

5

Delete composer.lock i vendor/ i ponownie uruchom composer update.

Powiązane problemy