将Laravel项目上载到Web服务器

时间:2014-02-27 17:00:02

标签: laravel web-hosting

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

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

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

这是我的Laravel项目目录:

Laravel Project Directory

编辑:我现在已将所有文件添加到根文件夹中,并将public添加到public_html中,但我的路线似乎都没有。 (它们在localhost上完美运行)。一切都抛出404

6 个答案:

答案 0 :(得分:43)

不,但你有几个选择:

最简单的方法是将您拥有的所有文件上传到您所在的目录(即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以指向正确的公共目录。

另一个解决方案,如果你不喜欢在'root'目录中拥有所有这些文件,那么将它们放在他们自己的目录(也许是'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

答案 1 :(得分:8)

我相信 - 您的Laravel文件/文件夹不应放在根目录中。

e.g。如果您的域指向public_html目录,则所有内容都应放在该目录中。怎么样 ?让我告诉你

  1. 在公共网页
  2. 中复制所有文件和文件夹(包括公共文件夹)
  3. 复制公用文件夹的所有内容并将其粘贴到文档根目录(即public_html)
  4. 删除公用文件夹
  5. 打开bootstrap / paths.php,然后将'public' => __DIR__.'/../public',更改为'public' => __DIR__.'/..',

  6. 最后是在index.php,

    更改

  7. 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应用程序现在应该可以使用。

答案 2 :(得分:5)

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

Hosting Laravel on shared hosting #1

Hosting Laravel on shared hosting #2

如果您想要PHP 5.4,请将此行添加到您的.htaccess文件中,或致电您的托管服务提供商。

AddType application/x-httpd-php54 .php

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

请确保使用PHP的正确版本。给自己省点压力:))

答案 5 :(得分:0)

在Laravel 5.x中没有paths.php

因此您应该修改public/index.php并更改此行以便提示您的bootstrap目录:

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

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

有关详细信息,请参阅this文章。