2015-04-11 3 views
1

Я пытаюсь загрузить изображение в мое приложение Laravel. Все отлично работает в localhost. Я много раз проверял.Ошибка при загрузке файла в Laravel

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

{"error":{"type":"Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException","message":"","file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php","line":210}}`

Не уверен, что в этом нет. Все хорошо работает в locahost. Я использую Ubuntu 14.02 на моем сервере. GD библиотека установлена ​​и активирована. Composer запущено обновление и установлены все пакеты.

В чем может быть проблема? Дайте мне знать, если вам нужны фрагменты кода. Заранее спасибо.

+0

Запустите 'php artisan routes' (или' php artisan route: list' для Laravel 5) и посмотрите, действительно ли маршрут, который вы загружаете, существует и является правильным. – lukasgeiter

+0

В задней части URL есть дополнительная '/'. Будет ли это проблемой? – user1012181

+0

Я так не думаю – lukasgeiter

ответ

3

Видимо, это была проблема с правами доступа к файлам.

Запуск php artisan routes (или php artisan route:list для Laravel 5) помог разобраться в другую проблему, так появилось сообщение реальной ошибки:

{"error":{"type":"ErrorException","message":"copy(/var/www/html/public//u‌​pload/20150413032940.jpeg): failed to open stream: Permission denied","file":"/var/www/html/app/controllers/NominationController.php","l‌​ine":88}}

Это означает, что пользователь Веб-сервер не может написать public/upload. Это может быть исправлено с помощью двух методов (выбор зависит от предпочтений и настройки)

  1. chown user:group /path/to/directory изменить владельца каталога
  2. chmod 775 /path/to/directory сделать записываемой для всех пользователей в группе владельца
+1

Еще одна вещь, которую нужно добавить: удалить любой косой чертой '/' для вызова Ajax, если он не определен в маршруте. У меня возникла проблема с вызовом ajax: 'example.com/upload/image /' Я изменил его на example.com/upload/image', и он сработал. В противном случае вы получите сообщение об ошибке «301 постоянно перемещаемое». – user1012181

+0

@ user1012181 Обычно запросы ajax должны соответствовать 301 переадресации ... – lukasgeiter

0

Убедитесь, что маршрут, который вызывается, когда вы передаете ваша форма доступна по методе представления вашей формы (например, GET, если его атрибут метода «GET»)

Например,

Route::get('/upload', ...) 

С

<form action="/upload" method="post">...</form> 

на ваш взгляд приведет к ошибке, которую вы получите.

+0

Я загружаю через Ajax. Некоторые другие методы ajax работают хорошо. Только загрузка изображения не работает – user1012181

+0

Можете ли вы опубликовать определение маршрута и базовую версию сценария загрузки? Вы уверены, что URL вашего маршрута не совпадает с другим, который принимает только неправильный метод HTTP? – christophetd

+0

Я не понимаю, все работает очень хорошо в локальном хосте. Так что может быть проблемой с сервером? – user1012181

0

У меня только была эта проблема, и после проверки разрешений и т. Д. Она все еще возникала ... Я просто попытался удалить косуя LEADING из пути, который я установил в моем .ENV-файле, и он работал (хотя это было относительно общедоступного веб-сервера так теоретически должен был работать с ведущей косой чертой, обозначающей sta к.т. на веб-сервер корневого каталога)

IMAGE_LIB_PATH = "бла/blahblah /"

Во всяком случае, надеюсь, что это поможет кому-то.

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