将 Laravel 项目上传到 Web 服务器

问题描述 投票:0回答:7

我正在尝试将我的 Laravel 项目上传到我的网络服务器上,但我过去的两次尝试都没有成功。我相信我没有将文件上传到正确的位置。

这是我的网络服务器的结构 -> WebServer Structure

我需要将所有 Laravel 文件上传到 public_html 吗?

这是我的 Laravel 项目的目录:

Laravel Project Directory

编辑:我现在已将所有文件添加到根文件夹中,并将公共文件添加到 public_html 中,但是我的路线似乎都不起作用。 (它们在本地主机上完美工作)。一切都会抛出 404

laravel upload webserver web-hosting
7个回答
47
投票

不,但您有几个选择:

最简单的方法是将所有文件上传到您所在的目录(即 cPanel 用户主目录)中,并将 public 的内容放入 public_html 中。这样你的目录结构就会像这样(有点乱,但它有效):

/
    .composer/
    .cpanel/
    ...
    app/                 <- your laravel app directory
    etc/
    bootstrap/           <- your laravel bootstrap directory
    mail/
    public_html/         <- your laravel public directory
    vendor/
    artisan              <- your project's root files

您可能还需要编辑

bootstrap/paths.php
以指向正确的公共目录。

另一种解决方案,如果您不喜欢将所有这些文件放在“根”目录中,请将它们放在自己的目录(可能是“laravel”)中,该目录仍在根目录中,然后编辑路径以正常工作。不过,您仍然需要将

public
的内容放入
public_html
中,这次编辑
public_html/index.php
以正确引导应用程序。这样你的文件夹结构会更加整洁(尽管由于更多地破坏框架的设计结构,路径可能会遇到一些麻烦):

/
    .composer/
    .cpanel/
    ...
    etc/
    laravel/      <- a directory containing all your project files except public
        app/
        bootstrap/
        vendor/
        artisan
    mail/
    public_html/  <- your laravel public directory

12
投票

我相信 - 你的

Laravel
files/folders
不应该放在根目录中。

例如如果您的域名指向

public_html
目录,那么所有内容都应放置在该目录中。如何 ?让我告诉你

  1. 复制

    public
    中的所有文件和文件夹(包括
    public_html

    文件夹)
  2. 复制公用文件夹的所有内容并将其粘贴到文档根目录(即

    public_html

  3. 删除

    public
    文件夹

  4. 打开您的

    bootstrap/paths.php
    ,然后将
    'public' => __DIR__.'/../public',
    更改为
    'public' => __DIR__.'/..',

  5. 最后在

    index.php

改变

require __DIR__.'/../bootstrap/autoload.php';

$app = require_once __DIR__.'/../bootstrap/start.php';

进入

require __DIR__.'/bootstrap/autoload.php';

$app = require_once __DIR__.'/bootstrap/start.php';

您的

Laravel
应用程序现在应该可以运行了。


5
投票

如果您尝试在共享主机上托管 Laravel 应用程序,这可能会对您有所帮助。

在共享主机上托管 Laravel #1

在共享主机上托管 Laravel #2

如果您想要 PHP 5.4,请将此行添加到您的

.htaccess
文件或致电您的托管提供商。

AddType application/x-httpd-php54 .php


4
投票

在 Laravel 5.x 中没有

paths.php

因此您应该编辑

public/index.php
并更改此行以便指向您的
bootstrap
目录:

require __DIR__.’/../bootstrap/autoload.php’;

$app = require_once __DIR__.’/../bootstrap/app.php’;

欲了解更多信息,您可以阅读这篇文章。


2
投票

也遇到了这个问题,发现最简单的方法是将您的域指向公共文件夹,并保留其他所有内容。

请确保使用正确版本的 PHP。给自己减轻一些压力:)


1
投票

所有 Laravel 文件都应该位于一个位置。 Laravel 正在向服务器公开其 public 文件夹。该文件夹代表整个应用程序的某种前端控制器。根据您的服务器配置,您必须将服务器路径指向该文件夹。正如我所看到的,您的图片上有 www 网站。 www 是 Unix/Linux 机器上的默认根目录。 最好查看服务器配置并搜索根目录位置。正如你所看到的,Laravel 已经有一个名为 .htaccess 的文件,其中包含一些现成的 Apache 配置。


0
投票

(1) 如果您在 Cpanel 或云端上传,请确保 Laravel、php 的确切版本。

(2) 在 .env 文件中引用数据库凭据用户进行更改,并在本地主机中传递

© www.soinside.com 2019 - 2024. All rights reserved.