2013-10-10 2 views
0

У меня возникла проблема с загрузкой FuelPHP для автозагрузки классов. На моем промежуточном сервере (Ubuntu, PHP 5.3.10) он не может найти пользовательские классы в каталоге fuel/app/classes, и он также не может работать oil test (я получаю сообщение об ошибке sh: 1: phpunit: not found). Как ни странно, он отлично работает на моей локальной версии разработки (Windows, PHP 5.3.6).Автозагрузчик FuelPHP не находит классы

Я подозревал, что это может иметь какое-то отношение к Composer, которое я использую в первый раз в этом проекте, но проблема не исправлена, когда я прокомментирую строку require APPPATH.'vendor/autoload.php'; из bootstrap.php (приложение все еще не работает для загрузки пользовательских классов от fuel/app/classes)

Я в тупике: я использовал FuelPHP для многих проектов и никогда не испытывал проблем с автозагрузчиком. Что особенно озадачивает то, что один и тот же код работает нормально в одном месте, а не в другом. Я был бы очень благодарен за любые предложения о том, как исправить это.

+0

Вы можете найти и опубликовать код автозагрузки? – Machavity

+0

Я не коснулся кода автозагрузчика, кроме добавления этой отдельной строки (требующей автозагрузчика композитора) к bootstrap.php. Автозагрузчик - это просто «core/classes/autoloader.php» для FuelPHP 1.6 (это большой файл, поэтому я не могу его публиковать). –

+0

Просто для пинков, попробуйте положить свой автозагрузчик и посмотреть, что произойдет. Убедитесь, что FuelPHP не использует старшую __autoload() http://php.net/manual/en/function.spl-autoload-register.php – Machavity

ответ

1

Я понимаю, что этот вопрос был задан давно, но у меня была такая же проблема, поэтому в интересах кого-либо еще с этой проблемой, вот то, что работает для меня:

создать новый файл PHP под названием oil.php в app/config директории со следующим кодом:

<?php 

// Unit tests will get shell error 'phpunit: command not found' unless 
// the path to php unit is specified. 
return array (
    'phpunit' => array (
     'binary_path' => 'fuel/vendor/bin/phpunit', 
    ), 
); 

Я использую топлива 1.7.2. Более подробную информацию можно найти here.

Хотя приведенный выше код исправил конкретные проблемы с PHPunit, у меня все еще было issues with Fuel and autoloaders not working. Топливо PHP не следует psr-4 (многие из основных топливных файлов имеют несколько определений классов в одном файле), что может вызвать проблемы с некоторыми автозагрузчиками.

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