Laravel 5部署导致内部服务器错误

时间:2015-11-28 18:11:45

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

Leravel 5部署获得:

内部服务器错误

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

我的文件结构:

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

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

user :: rwx

group :: 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的版本

时,降级实际上失败了

4 个答案:

答案 0 :(得分:1)

Laravel 5.1需要PHP 5.5.9,每packagist

Laravel 5.0没有绑定的PHP版本要求,每个packagist,但是任何低于PHP 5.5的东西都不是一个好主意。

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

答案 1 :(得分:1)

&#34;内部服务器错误&#34;也许是由很多原因引起的。库未安装,配置错误,版本冲突。

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

答案 2 :(得分:1)

如果您可以检查/ var / log / apache2或/ var / log / httpd中的日志以查找错误,那将非常有用。但是,既然你说你的服务器运行的是PHP 5.5.0和

  

当我检查laravel的版本

时,降级实际上失败了

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

答案 3 :(得分:0)

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

检查laravels php_errors.log很快就清楚地说明了什么是错误的。