Laravel远程服务器错误500,站点不起作用

时间:2015-06-15 16:13:48

标签: php apache laravel-4 web-deployment remote-server

这是我第一次上传到Laravel网站的远程服务器。

本地我已经配置了一个虚拟主机,因此我对我的网站的访问权限就像:

site.domain.com //it's pointing htdocs/laravel-proyect/public

我已将我的网站上传到我的远程服务器,然后:

  • 更改存储及其所有目录的权限
  • 将permisions更改为bootstrap
  • 更改app.php的配置

    'url'=> 'http://site.domain.com',

  • 使用新参数(以及email.php)更改database.app中的配置

  • 在数据库中加载所有表格和数据

然后我尝试加载我的网站并获得500内部服务器错误

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

它有点工作,我在routes.php中有这个代码:

// Begins in the login view
Route::get('/', function()
{
    if (!Sentry::check()) {
        $data = array();
        if (Session::has('email')) {
            $data = array('email' => Session::get('email'));
        }

        return Redirect::route('login', $data);
    }
    else
        return Redirect::route('users');
});

/   ========================================
// LOGIN, LOGOUT AND ACTIVATION SECTION ==========
// // ============================================
// show the login page
Route::get(MyHelpers::textLang('login','routes'), array('as' => 'login', function()
{
    if (Sentry::check())return  Redirect::route('users');
    else {
        $rules = User::$rules_login;
        // show the login page (app/views/frontend/login.blade.php)
        return View::make('frontend.login', compact('rules'));
    }

所以在第一时间mo url看起来像:

site.domain.com/entrar

'entrar',(以西班牙语登录),y由MyHelpers设置:: textLang('login','routes'),访问我的班级MyHelpers和lang文件,将'login'翻译成'entrar',但是不要加载模板。

开始:

  • 阅读文档,进行一些更改:从中删除多视图 .htaccess(已弃用),也将RewriteBase添加到.htaccess。
  • 复制/公共内容到基础目录并更改引导程序/路径中的路径 在index.php文件中。
  • 在两个远程服务器中重新安装以验证我的提供程序是否失败(相同的错误)。与我的提供者交谈,supouse 服务器上没有错误。
  • 我在基础目录中创建了一个新的htaccess,将路由重定向到/ public。
  • 尝试使用php 5.4,5.5和5.6

其实我的.htaccess是:

RewriteEngine On

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

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

我没有更多的想法,也找不到与此相关的其他解决方案。

有什么想法吗?拜托,我疯了,在wensday,我必须接受一个新的项目,并且还在使用这个项目。

由于

3 个答案:

答案 0 :(得分:6)

我必须添加

RewriteBase /

到.htaccess

答案 1 :(得分:1)

我在heroku Simple Blog上有一个演示laravel应用程序。我的.htaccess文件是:

Route::get('/','basic configurations are correct');

您的.htaccess文件似乎没有问题。代码逻辑可能有问题。如果在localhost上没有使用相同代码的错误,请再次检查您的配置。对于laravel 4,stackoverflow Laravel 4 Virtual Host and mod rewrite setup

上已存在类似的问题

请注意,laravel 5(如果您使用它)从.env文件中获取输入(数据库连接和其他设置)。

如果您仍然收到错误,请尝试在索引页面上发送简单响应,如:

{{1}}

然后逐步使其复杂化。它将帮助您找到错误。

答案 2 :(得分:0)

@kikerrobles的答案确实有效。

您最终的.htaccess文件应如下所示

<IfModule mod_rewrite.c>

    <IfModule mod_negotiation.c>

        Options -MultiViews -Indexes

    </IfModule>

    RewriteEngine On

    RewriteBase /

    # Handle Authorization Header

    RewriteCond %{HTTP:Authorization} .

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_URI} (.+)/$

    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^ index.php [L]

</IfModule>