虚拟主机-将Laravel项目上传到Web
我正在尝试将Laravel项目上载到Web服务器,但是我过去的两次尝试均未成功。 我相信我没有将文件上传到正确的位置。
这是我的Web服务器的结构->
我是否正确地说我需要将所有所有laravel文件上传到public_html?
这是我的Laravel项目的目录:
编辑:我现在将所有文件添加到根文件夹中,并公共添加到public_html,但是我的所有路由似乎均不起作用。 (它们在localhost上完美运行)。 一切都抛出404
6个解决方案
43 votes
不,但是您有两种选择:
最简单的方法是将您拥有的所有文件上传到您所在的目录(即cPanel用户主目录)中,并将public的内容放入public_html中。 这样,您的目录结构将是这样的(有点混乱,但它可以工作):
/
.composer/
.cpanel/
...
app/
etc/
bootstrap/
mail/
public_html/
vendor/
artisan
您可能还需要编辑public以指向正确的公共目录。
如果您不希望将所有这些文件都放在该“根”目录中,则另一种解决方案是将它们放在仍位于根目录中的它们自己的目录(可能是“ laravel”)中,然后编辑路径以使其正常工作。 但是,您仍然需要将public的内容放入public_html中,这一次编辑public_html/index.php以正确地引导应用程序。 这样,您的文件夹结构会更加整洁(尽管由于更多地干扰了框架的设计结构,所以路径可能会有些令人头疼):
/
.composer/
.cpanel/
...
etc/
laravel/
app/
bootstrap/
vendor/
artisan
mail/
public_html/
alexrussell answered 2019-12-27T19:00:50Z
9 votes
我相信-您的Laravel文件/文件夹不应该放在根目录中。
例如 如果您的域指向require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/start.php';目录,则所有内容都应放在该目录中。 怎么样 ? 让我告诉你
复制公共html中的所有文件和文件夹(包括公共文件夹)
复制公用文件夹的所有内容,并将其粘贴到文档根目录中(即public_html)
删除公用文件夹
打开bootstrap / paths.php,然后将require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/start.php';更改为'public' => __DIR__.'/..',
最后在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应用程序现在应该可以运行了。
Raj Sf answered 2019-12-27T19:01:58Z
5 votes
如果您试图将您的Laravel应用托管在共享托管上,这可能会对您有所帮助。
在共享主机#1上托管Laravel
在共享主机2上托管Laravel
如果要PHP 5.4,请将此行添加到AddType application/x-httpd-php54 .php文件中,或致电您的托管服务提供商。
AddType application/x-httpd-php54 .php
Abhinandan N.M. answered 2019-12-27T19:02:36Z
1 votes
您的所有Laravel文件都应位于一个位置。Laravel将其公用文件夹公开给服务器。 该文件夹代表整个应用程序的某种前端控制器。 根据服务器配置,您必须将服务器路径指向该文件夹。 如我所见,您的图片上有www网站。 www是Unix / Linux计算机上的默认根目录。最好看看服务器配置内部并搜索根目录位置。 如您所见,Laravel已经有一个名为.htaccess的文件,并且已经进行了一些Apache配置。
carousel answered 2019-12-27T19:02:57Z
1 votes
同样也存在此问题,发现最简单的方法是将您的域指向公用文件夹,然后将其他所有内容保留原样。
请确保使用正确的PHP版本。 为自己节省一些压力:)
Overcomer answered 2019-12-27T19:03:21Z
1 votes
在Laravel 5.x中没有public/index.php
因此,您应该编辑public/index.php并更改此行,以便将其拖到您的bootstrap目录中:
require __DIR__.’/../bootstrap/autoload.php’;
$app = require_once __DIR__.’/../bootstrap/app.php’;
有关更多信息,您可以阅读本文。
M.A. Heshmat Khah answered 2019-12-27T19:03:50Z