laravel 5.2内部服务器错误


laravel 5.2 internal server error

artisan serve推荐我的laravel项目在localhost中运行良好。现在我正试着把它放在网络主机上。我在public_html下上传我的项目,并从public文件夹复制所有文件,我还编辑了app.php 'debug' => env('APP_DEBUG', true),以显示错误。

我编辑index.php

require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';

但它仍然返回500内部服务器错误。

我也尝试了另一种方式,将我的项目上传到除public文件夹外的根目录,并将public文件夹上传到public_html目录。并且我将index.php编辑为

require __DIR__.'/laravel/bootstrap/autoload.php';
$app = require_once __DIR__.'/laravel/bootstrap/app.php';

我找不到我的代码有什么问题。如何将我的laravel 5.2项目部署到网络主机中。?

否否否。您需要通过一些改进来实现第二个选项。让我向你解释一下。laravel应用程序看起来像:

app/
config/
public/
public/index.php
.env
composer.json
artisan

对吧?很好,现在网络主机的结构看起来像:

/home/user/
/home/user/public_html/

但是上面的结构不适合我们的需要,因为应该访问public/文件夹而不是public_html/。所以…第一步是上传你的项目,比如说,像这样:

/home/user/home/project/app/
/home/user/project/config/
/home/user/project/.env
/home/user/project/composer.json
/home/user/project/public/index.php

下一步是决定是将项目作为主域,还是作为子域。

  1. 如果您的laravel项目将作为主域,只需编辑apache的配置文件httpd.conf并设置以下规则:

    DocumentRoot"/home/user/project/public"…

  2. 如果您想将项目作为子域,只需编辑apache的配置文件httpd.conf并添加一个虚拟服务器,如下所示:

    Listen 80
    <VirtualHost *:80>
        DocumentRoot "/home/user//project/public"
        ServerName my-project.example.com
        # Other directives here
    </VirtualHost> 
    

    通过这个指令,您将告诉apache Hey! when people visits my-project.example.com show them the content of my site under /home/user/site/public

    如果你正在使用cpanel,只需创建一个子域并将其指向/home/user/site/public

仅此而已,您不需要破解任何项目的文件,如index.php,这是一种糟糕的做法。