我正在尝试将我的Laravel项目上传到我的网络服务器上,但我过去的两次尝试都没有成功。我相信我没有将文件上传到正确的位置。
这是我的网络服务器的结构 - >
我说我需要将所有laravel文件上传到public_html吗?
这是我的Laravel项目目录:
编辑:我现在已将所有文件添加到根文件夹中,并将public添加到public_html中,但我的路线似乎都没有。 (它们在localhost上完美运行)。一切都抛出404
答案 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
目录,则所有内容都应放在该目录中。怎么样 ?让我告诉你
打开bootstrap / paths.php,然后将'public' => __DIR__.'/../public',
更改为'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应用程序现在应该可以使用。
答案 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文章。