2014-06-15 3 views
5

я с удовольствием работал далеко в моей среде разработки и вдруг я начал получать следующее сообщение об ошибке:PHP/Композитор не может переобъявить

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

Я не сделал каких-либо изменений, чтобы говорить о в зависимости композитора (хотя я думаю, Я сделал сделать composer update где-то в том, что сроки, но никаких изменений в зависимости/пакетов используется так ничего большого не должно быть изменено.

следует отметить, что, когда я проверка репо на моем ноутбуке, я не получаю эту ошибку, но если я git clone чистое репо, а затем composer install на моей основной машине разработки. это ошибка. Поэтому я предполагаю, что он должен иметь какое-то конкретное машинное происхождение, но у меня заканчиваются идеи о том, что это может быть.

Любая помощь была бы принята с благодарностью.

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


Следует также отметить, что я бегу PHPUnit 4.0.17 и ошибка срабатывает при первых этапах попытке запуска модульного теста (это не имеет значения, какой тест единицы) , Вот трассировки стека:

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

Так что же такое 'autoload_real' линии 56 и 59? – zerkms

+0

Это просто файл автозагрузки по умолчанию для композитора ... Я бы подумал, что ваш будет таким же, как мой, но в случае, если это не так ... строка 56 - это определение функции 'function composerRequireb319f8584bff24b05e527f91a6f7f8bf ($ file)', а строка 59 - закрывающая скобка для этой функции, где единственной линией функции является необходимость передачи переданного файла. – ken

+0

поставьте его на http://pastebin.com, пожалуйста, тогда. И убедитесь, что вы смотрите на правильный файл - я вряд ли сомневаюсь, что закрывающая скобка может вызвать такую ​​проблему. – zerkms

ответ

2

У меня была эта проблема, когда я сделал копию существующего каталога проекта и попытался запустить PHPUnit на новый каталог. Наконец выяснилось, что, когда я выполнял phpunit, он заканчивался из старого каталога. Я побежал это:

which phpunit

И увидел, что он работает от моего композитора каталога поставщика:

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

Я побежал PHPUnit из нового каталога и проблема исчезла:

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

+0

рад, что вы разобрались. для меня проблема была другая, но прошло достаточно времени. Боюсь, я не помню достаточно деталей. – ken

5

Удалить composer.lock и vendor/ и снова запустите composer update.

Смежные вопросы