2015-02-07 3 views
2

Я развернул приложение Symfony на сервер one.com. Я написал почтовую службу, которая отправляет мои письма через SwiftMailer.Symfony2 - Класс XXX не найден

Теперь, поскольку one.com не имеет разрешений phar-расширений, композитор не может быть обновлен через ssh. Так что я сгенерировал classmap локально с

composer update -o 

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

Fatal error: Class 'Stocksolutions\ShopBundle\DependencyInjection\Mail' not found in /customers/4/b/b/stocksolutions.be/httpd.www/releases/20150204201140/app/cache/dev/appDevDebugProjectContainer.php on line 3602

Я искал композитора classmap и класс, который не нашел внутри него:

'StockSolutions\\ShopBundle\\DependencyInjection\\Mail' => $baseDir . '/src/StockSolutions/ShopBundle/DependencyInjection/Mail.php' 

Кроме того, я могу получить другие услуги в контейнере, fe те из FOSUserBundle, но получение моих пользовательских сервисов вызывает ошибку. Кроме того, я не получаю эти ошибки при локальном тестировании.

Любые идеи?

+3

Вы не должны ОБНОВЛЯТЬ на производственном сервере, потому что это приведет к появлению новых версий, с которыми вы не тестировали. Запустите 'composer install' и зафиксируйте и разверните этот файл' composer.lock' в свой проект. В вашем развертывании может использоваться SSH для копирования с локальной машины на удаленную, с установленными зависимостями и автоматической загрузкой. Если он работает локально, он должен работать удаленно. – Sven

+0

Это не работает, когда я не генерирую classmap. Затем я получаю эту ошибку «Class not found» на домашней странице (с другим классом). Возможно, что-то стоит знать, так это то, что приложение находится во вложенной папке и упоминается через файл htaccess. И снова путь к классу в map-карте правильный и файл на месте. Поэтому я не могу обернуть моя голова вокруг этого .. –

+0

Вы пытались очистить кеш после создания карты классов? Это обновит 'appDevDebugProjectContainer.php', и, возможно, ваша проблема исчезнет. –

ответ

5

Это чувствительная к регистру проблема.

Ваша ошибка:

Fatal error: Class 'Stocksolutions\ShopBundle\DependencyInjection\Mail' not found

строчная s в Stocksolutions пространства имен для PSR силы для поиска файла /src/Stock**s**olutions/ShopBundle/DependencyInjection/Mail.php, но существует /src/Stock**S**olutions/ShopBundle/DependencyInjection/Mail.php.

В локальной системе, вероятно, Windows, где путь/имя файла нечувствителен к регистру, ошибка не возникает.

P.S. Скорее всего, опечатка в пространстве имен классов содержится в описании услуги пакета (services.yml/services.xml).

+0

Спасибо вам большое. Я не мог обдумать это! –

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