Laravel路线返回500错误

时间:2017-06-12 13:21:09

标签: php laravel routing

我将基本的Laravel项目部署到服务器。当我点击我的域时,它返回默认的欢迎视图。当我添加简单的道路(见下文)代码并尝试在浏览器中输入该路线时,它返回500内部错误。除了" /"所有路线都返回500错误。根路线。

文件夹结构:

/
#laravel
#subdoms
##api

Laravel文件位于laravel目录中,但公共目录中的文件除外。

api目录中的

.htaccess文件:

<IfModule mod_rewrite.c>
  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>

存储目录及其中的所有内容都是可写的,可读的,可供任何人执行。

laravel / storage / logs中没有错误日志。

laravel / routes / web.php:

<?php

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

Route::get('hello', function () { // 500 internal error
    return 'Hello world';
});

服务器信息:

服务器 - Linux CentOS - Apache 2.2 - 服务器端包括 - SSI - PHP版本7.0.17

3 个答案:

答案 0 :(得分:1)

<强>解决方法1:

在所有路线前添加'/';你的情况'/你好'。要么 ;

<强>溶液2:

我猜.htaccess被忽略了。 http://httpd.apache.org/docs/2.2/en/mod/core.html#allowoverride

*apache2.conf file in /etc/apache2 : *

ServerName localhost

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

        选项索引FollowSymLinks         AllowOverride无         要求全部授予

解决方案3:

Apache可能配置为拒绝.htaccess覆盖。在这种情况下,您需要在VirtualHost配置中添加一个允许这些段的段。有关更多信息,请参阅Apache文档。也可能是未启用mod_rewrite的情况。如果使用Ubuntu,Debian或其他基于Debian的操作系统,则使用sudo a2enmod重写,然后使用sudo service apache2 reload就足够了。

这是我的,它有效

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

    RewriteEngine On
    RewriteBase /laravel51/public/
   # change above to your site i.e.,  RewriteBase /whatever/public/

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

答案 1 :(得分:0)

Route::get('/', function () {
    return response()->view('welcome',[],200);
})

答案 2 :(得分:0)

对于那些刚刚读完该书但仍然没有解决方案的人,可能是您只是从gitlab或github帐户上的回购中克隆了一个项目,却忘记了生成.env文件并在其中生成APP_KEY。因此,请转到您的项目目录并打开一个终端,然后运行cp .env.example .env。这将创建.env文件。然后运行php artisa key:generate

请注意,在我的特殊情况下,laravel为每条路线返回了500条错误。