【问题标题】:Laravel remote server error 500, site doesn't worksLaravel 远程服务器错误 500,站点不工作
【发布时间】:2015-08-31 05:38:04
【问题描述】:

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

本地我已经配置了一个虚拟主机,所以我对我的网站的访问是这样的:

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

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

  • 更改存储及其所有目录的权限
  • 将权限更改为引导程序
  • 改变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。
  • 将 /public 内容复制到基本目录并更改 bootstrap/paths 中的路径和 在 index.php 文件中。
  • 在两个远程服务器中重新安装以验证我的提供程序是否失败(同样的错误)。与我的提供者交谈,配偶 服务器上没有错误。
  • 我在基础目录中创建了一个新的 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]

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

有什么想法吗?拜托,我快疯了,在星期三我必须开始一个新的项目,并且仍在使用这个项目。

谢谢

【问题讨论】:

  • 首先查看错误日志以了解有关 500 的详细信息。在您知道问题所在之前,不要四处尝试不同的东西。
  • 谢谢@Mark,我无法访问服务器日志,我的提供商告诉我,服务器似乎无法加载某些文件。
  • 您无法访问自己的(错误)日志,请他们给您一份错误日志的复制粘贴,或者只是转向更专业的服务,这太荒谬了。在开发过程中,您将遇到 500 多个日志,对于访问这些日志的开发人员来说至关重要。 500 个错误已经由简单的拼写错误产生。
  • 我为他们服务。前段时间我可以访问,现在无法访问公共目录,是一个多域站点,配置选项很差(简单,但很差)
  • 如果我删除 de .htcaccess 并使用 'site.com/index.php' ,则一切正常

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


【解决方案1】:

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

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

    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]
</IfModule>
#other lines for gzip

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

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

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

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

然后逐步复杂化。它将帮助您发现错误。

【讨论】:

  • 谢谢@harish。我忘了补充一点,它有点作用。我将编辑我的帖子以添加此内容。当访问该站点时,它开始工作,进入路由文件,因为 muy '/' 路由重定向到 /entrar (西班牙语登录),并且单词 'entrar' 它在 lang 文件中,我通过个人助手得到它辅助类中的静态方法。
  • 您的登录视图 (url site.domain.com/entrar) 是否正常显示且没有任何错误?
  • 不,我收到 500 错误,但我看到它正确:Route::get('/', function() { if (Sentry::check())return Redirect::route ('users'); 但是 Angular 不工作(cookies 策略),不要隐藏消息,如果发送表单再次收到 500 错误 else { $rules = User::$rules_login; // 显示登录页面 (app/views/frontend/login.blade.php) return View::make('frontend.login', compact('rules')); } });
  • 我必须慢慢去看看哪里崩溃了,(没有时间:P)。谢谢@harish 缓存文件可以做到这一点吗?可能是在寻找缓存文件?
  • 如果缓存不是错误,请检查以下内容: 1) 我在 laravel 文档中找不到这个 User::$rules_login;如果它是您自己的变量,那么它必须是静态的,因为您直接调用它。 2) 在没有 MyHelpers 的情况下尝试您的应用程序(使用直接 url)。它会告诉你的助手是对还是错。 3)如果前两种情况通过,那么你的观点是错误的。然后检查您的视图文件。
【解决方案2】:

我要补充

RewriteBase /

到.htaccess

【讨论】:

  • 我的也是:D 谢谢老兄。
【解决方案3】:

@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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多