Почему мой autoload.php композитора не работает?

У меня есть проект, я использую Composer и многое им импортирую... мне нужен autoload.php в моем индексе (корень проекта), и вместо этого Slim, Mongo, Twig работают очень хорошо. Но когда я вызываю класс Respect/Validation, он не работает; если я просто использую Respect/Validation, ошибка:

Class 'Respect\Validation\Validator' not found in (path of file when i need it).

если я попытаюсь также потребовать здесь autoload.php, ошибки:

**Warning**: require_once(vendor/autoload.php): failed to open stream: No such file or directory in (path of file when i need it)

**Fatal error**: require_once(): Failed opening required 'vendor/autoload.php' (include_path='.;C:\xampp\php\PEAR') in (path of file when i need it)


person Matteo Calò    schedule 19.08.2013    source источник
comment
Я сделал это в Composer/bin с помощью cmd... dir=$(d=$(dirname $0); cd $d $$ pwd) if command -v 'cygpath' ›/dev/null 2› then dir=$ (cygpath -m $dir); fi dir=$(echo $dir | sed 's/ /\ /g') php ${dir}/composer.phar $* –   -  person Matteo Calò    schedule 19.08.2013
comment
Пробовали включать файл autoload.php относительным образом откуда нужно?   -  person Davide Pastore    schedule 19.08.2013
comment
Я попробовал это, и, как я уже сказал, я сказал, что autoload.php не находит файл, но если я оставлю только использование, мне будет сказано, что я не могу найти класс Validator.   -  person Matteo Calò    schedule 19.08.2013
comment
Вам нужно require_once('../../../../vendor/autoload.php'). Таким образом подключите нужный файл.   -  person Davide Pastore    schedule 19.08.2013


Ответы (8)


Если вы используете файл (file.php) в определенном каталоге, например:

/app/controller/validation

и ваш каталог поставщика находится в базовом пути проекта, вам необходимо указать относительный путь к каталогу поставщика:

../../../vendor/autoload.php
person Davide Pastore    schedule 19.08.2013

Попробуйте использовать php composer dump-autoload. Это может решить эту проблему.

person ciruvan    schedule 19.08.2013

Я сделал это. я проверил файл и разрешения, как всегда, но все выглядит нормально. Потом открываю autoload.php и вижу... о! у нас есть __DIR__ конечно.

я делал это

require '../../vendor.autoload.php';

Изменился на

require __DIR__.'../../vendor.autoload.php';

Неполиткорректно, но на данный момент меня достала досадная трата времени.

конечно, есть лучшие альтернативы __DIR__, такие как использование BASE Path и т. д. Но это сработало для меня.

person Abhishek Dujari    schedule 07.02.2014
comment
2016... тоже перешел на python. :П - person Abhishek Dujari; 13.02.2016

У меня была такая же проблема с xampp. Я установил композитор и использовал:

composer create-project --stability=dev --prefer-dist yiisoft/yii2-app-basic D:\xampp\htdocs\newapp

Моя проблема решена сейчас.

person jaip    schedule 04.01.2016

У меня была та же проблема, и я решил ее, используя последнюю версию laravel, просто попробуйте этот код, чтобы создать свой проект:

composer create-project laravel/laravel exampleProject --prefer-dist

это всегда использует последнюю версию.

person Community    schedule 02.07.2016

Решил простым перезапуском composer update из проекта Root. (мой случай был на Magento2, но ошибка и путь совпадают)

person Francesco Tanganelli    schedule 05.09.2016

В моем случае я просто забыл изменить свой рабочий каталог перед запуском команды composer require cboden/ratchet в cmd, это исправило cd c:\path to project\, затем composer require cboden/ratchet

person atswann    schedule 30.04.2017

Я решаю проблему без каких-либо install или update из composer и просто перемещая require_once из подкласса в main page.

require_once 'vendor/autoload.php';
person Sayed Abolfazl Fatemi    schedule 31.01.2019