【问题标题】:Laravel 5 deployment getting internal server errorLaravel 5 部署出现内部服务器错误
【发布时间】:2016-03-02 16:16:03
【问题描述】:

Laravel 5 部署获取:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求

我的文件结构:

|
|-pub                           -> from laravel folder public
|-my_apps
     |- my_first_app            -> all other files from laravel project
           |- app
           |- bootstrap
           |- config
           |- database
           |- resources
           |- storage
           |- ...

我已将存储文件夹权限设置为:

用户::rwx

组::rwx

其他::rwx

这是我在 /pub 目录中的 .htaccess 文件

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

    RewriteEngine On
    RewriteBase /  <-------- I added this line

    # 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]
</IfModule>

我也在\pub\index.php中更改路径

<?php

//updated path
require __DIR__.'/../my_apps/my_first_app/bootstrap/autoload.php';

//updated path
$app = require_once __DIR__.'/../my_apps/my_first_app/bootstrap/app.php';

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

我本地机器上的 PHP 是 PHP 5.6,它是 PHP 5.5。我尝试添加

AddHandler application/x-httpd-php55 .php

RewriteEngine On 行之后的.htaccess 中。

更新

服务器运行 PHP 5.5.0,所以我将 Laravel 5.1 降级到 5.0,它现在可以在宅基地上运行。 我现在正在关注https://medium.com/laravel-news/the-simple-guide-to-deploy-laravel-5-application-on-shared-hosting-1a8d0aee923e#.50q2s8wer 进行部署。 当我检查 laravel 的版本时,降级实际上失败了

【问题讨论】:

  • 检查 laravel 和 apache 日志以获取有关错误性质的更多信息。
  • 检查php版本
  • 服务器上的php 5.5.0版本,我在homestead上使用php 5.6进行开发
  • 使用您在默认代码中所做的更改降级到 laravel 5 是否正常工作?你是什​​么意思:“它现在可以在宅基地上运行。”

标签: php .htaccess laravel-5 web-deployment


【解决方案1】:

根据packagist,Laravel 5.1 需要 PHP 5.5.9。

根据packagist,Laravel 5.0 没有 PHP 版本要求,但是低于 PHP 5.5 的任何版本都不是一个好主意。

由于您的服务器运行 5.5.0(每条评论),那么我猜您是在 composer 之外安装的。降级你的 Laravel 环境或升级你的 PHP 环境。升级 PHP 是个好主意。

【讨论】:

  • 我已经将我的 laravel 降级到 5.0,但仍然出现内部服务器错误。我无权在服务器上升级 PHP
  • 好的。 “内部服务器错误”通常(但不限于)意味着 Laravel 发出了未捕获的异常(例如,错误的配置)或 PHP 遇到了致命错误(例如,语法错误)。检查您的 Apache、PHP 和 Laravel 日志并将结果作为更新发布。 Apache 日志通常位于/var/log/httpd//var/log/apache。 PHP 错误日志通常位于/var/log/messages,但php -i | grep error 会提供更多信息。 Laravel 日志通常位于 storage/logs 下的应用程序目录中。 More here
【解决方案2】:

“内部服务器错误”可能由多种原因引起。库未安装,配置错误,版本冲突。

所以请检查 /var/log/apache/var/log/httpd 中的 apache 错误,Laravel 错误以获取有关错误的更多详细信息。如果您看不到错误,请确保您在php.ini 文件中打开了 php 显示错误。

【讨论】:

    【解决方案3】:

    如果您可以检查 /var/log/apache2 或 /var/log/httpd 中的日志是否有错误,那将会很有帮助。但是,既然你说你的服务器正在运行 PHP 5.5.0 和

    当我检查 laravel 的版本时,降级实际上失败了

    所以,显然最可能的原因是您的服务器正在尝试使用 PHP 5.5.0(not supported)运行 laravel 5.1。您现在的解决方案是使用 laravel 5.0 创建一个新项目,然后将您从当前项目创建的代码文件复制到新项目并相应地更新它们,以便它们与 laravel 5.0 一起使用。

    【讨论】:

      【解决方案4】:

      在我的情况下,它就像我的一个包含中的区分大小写的错字一样简单。我在 Windows 机器上开发,它不关心文件路径中的大小写敏感性。然而,在部署到 Linux 服务器后,我遇到了臭名昭著的内部服务器错误。

      检查 laravel 的 php_errors.log 很快就清楚出了什么问题。

      【讨论】:

        猜你喜欢
        • 2021-10-23
        • 2016-05-14
        • 2016-10-02
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 2015-10-11
        • 2015-09-20
        相关资源
        最近更新 更多