Маршруты Laravel, кажется, не работают

Я новичок в Laravel.

Я настроил сервер Fedora 23 через Oracle VirtualBox, установил composer и создал проект Laravel 5.3 в виде html-папки (для удобства, поскольку он доступен только по IP-адресу виртуальной машины). Я также отключил его брандмауэр, так как это только для тестирования / обучения.

Я дал разрешения на доступ к папке хранения 755, и я получил страницу приветствия в браузере, просто набрав http: // «IP».

Я создал представление index.blade.php, с тем же кодом, что и welcome.blade.php, но изменив слово Laravel на «Something». Теперь приходит проблема.

Я создал контроллер HomeController.php, чтобы я мог получить маршрут php artisan: кеш без ошибок, поскольку, если я вернул представление в файле routs / web.php, он выдал ошибку:

[myuser@webserver]$ php artisan route:cache
Route cache cleared!

[LogicException]
Unable to prepare route [/] for serialization. Uses Closure.

Итак, мои файлы выглядят так:

маршруты / web.php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of the routes that are handled
| by your application. Just tell Laravel the URIs it should respond
| to using a Closure or controller method. Build something great!
|
*/

/*
Route::get('/', function () {
return view('welcome');
});

Route::get('home', function () {
return view('index');
});
*/

Route::get('/', 'HomeController@getWelcomePage');
Route::get('home', 'HomeController@homepage');

приложение / Http / Контроллеры / HomeController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

class HomeController extends Controller
{
public function homepage(){
return view('index');
}

public function getWelcomePage(){
return view('welcome');
}

}

общественности / .htaccess

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

/etc/httpd/conf/httpd.conf (я удалил строки комментариев в примере здесь для целей длины)

ServerRoot "/etc/httpd"
Listen 80

Include conf.modules.d/*.conf

User apache
Group apache

ServerAdmin root@localhost

<Directory />
AllowOverride none
Require all denied
</Directory>

DocumentRoot "/var/www/html/public"
<Directory "/var/www">
AllowOverride none
# Allow open access:
Require all granted
</Directory>

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

<Files ".ht*">
Require all denied
</Files>

ErrorLog "logs/error_log"
LogLevel warn

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>

CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"</IfModule>

<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>

<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset UTF-8

<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>

EnableSendfile on

IncludeOptional conf.d/*.conf

После всего этого я могу увидеть страницу приветствия, набрав http: // «IP», но если я наберу http: // «IP» / home, я получу только пустую страницу. Браузер сообщает мне, что страница вернулась с Внутренней ошибкой сервера 500, однако в хранилище / logs / laravel.log ничего не отображается (последний журнал был ошибкой из-за маршрута php artisan: кеш не может быть выполнен из-за представления возвращается в файле web.php)

[2017-01-19 13:00:49] local.ERROR: exception 'LogicException' with message 'Unable to prepare
route [/] for serialization. Uses Closure.'
in /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php:995

Самым странным для меня является то, что если я прокомментирую ВСЕ записи в файле маршрута, я получу исключение для маршрута не найдено для http: // «IP» / home, но если я просто наберу http: // «IP», я все равно получить приветственный клинок

Я считаю, что моя проблема очень проста, но после нескольких часов поиска и проб / ошибок я все еще не могу решить эту проблему.

Любая помощь / предложения приветствуются.

РЕДАКТИРОВАТЬ: Моя проблема не в ошибке закрытия, я создал методы контроллера для маршрутов. Моя проблема в том, что сервер выдает только приветственный блейд, все остальные выдают мне 500 Internal Server Error

2

Решение

Наконец то понял!

После прочтения комментариев https://woohuiren.me/blog/installing-laravel-5-on-fedora/, пользователь, который, очевидно, имел ту же проблему, что и я, сказал следующее:

Кажется, с помощью этой команды решите пустую страницу (код ошибки 500)

$ cd laravel_project

$ php кэш ремесленника: очистить

$ chmod -R 777 хранилище

$ composer dump-autoload

Я установил SElinux для разрешения, должно быть хорошо, верно?

Я получил страницу, показывающую без проблем.

2

Другие решения

Оказывается, вы не можете использовать любое кэширование маршрутов с Laravel 5, если у вас есть какие-либо маршруты в качестве замыканий (потому что это не будет кэшировать функцию). Закрытие, как:

Route::get('/', function() {
return view('welcome');
});

Либо прекратите кэшировать ваши маршруты, либо удалите все эти замыкания. Больше информации в этот вопрос GitHub.

0

Похоже на ошибку, ваш журнал не тот, который вызывает ошибку 500. Если вы удалите этот журнал и попытаетесь перейти к этому маршруту, вы не увидите никаких ошибок. В последний раз, когда я сталкивался с этим, мои каталоги хранилища не были созданы и / или права доступа к ним не были правильными. Убедитесь, что ваш каталог хранения доступен для записи веб-сервером (я обычно устанавливаю значение 775) и все каталоги существуют. Создайте их, если они этого не делают:

storage/
|
|-- app/
|   |-- public/
|
|-- framework/
|   |-- cache/
|   |-- sessions/
|   |-- views/
|
|-- logs/
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector