将 Laravel 5 上传到服务器子文件夹
Posted
技术标签:
【中文标题】将 Laravel 5 上传到服务器子文件夹【英文标题】:Upload Laravel 5 to server subfolder 【发布时间】:2016-05-29 10:19:10 【问题描述】:我正在尝试将 Laravel 5 项目上传到子文件夹:
public_html/project/
我在index.php里改了
require __DIR__.'/../project/bootstrap/autoload.php';
$app = require_once __DIR__.'/../project/bootstrap/app.php';
在 config/app.php 中
'url' => 'http://example.com/project',
当我尝试 url 为: http://example.com/project/public 它被定向到 http://example.com/public
上传到服务器的方法是什么。任何人都可以帮助我,因为我尝试了很多选项。
【问题讨论】:
将您的项目根目录更改为public_html/project/public
。您无需更改任何其他内容。
【参考方案1】:
问题已解决:-
转到 laravelFolder/bootstrap/cache 然后重命名 config.php 例如。 config.php_old 并重新加载您的网站。
【讨论】:
【参考方案2】:我确实喜欢这个。 (我的版本是 laravel 5.2)
-
将 server.php 文件的名称更改为“index.php”。
将 .htaccess 文件从公用文件夹复制到主目录(已创建子文件夹)
在 RewriteEngine On 之后的 .htaccess 中,我们必须添加
RewriteBase /yoursubfolder/
【讨论】:
【参考方案3】:将整个 laravel 项目上传到 public_html (public) 文件夹不是一个好主意。公用文件夹中的文件具有不受限制的访问权限。
如果您因为想上传到共享主机而被限制考虑将 laravel 项目上传到 public_html 文件夹,那么没有必要这样做。 试试这个: 1. 在 public_html 文件夹的同一级别上创建一个名为 laravel(或任何你喜欢的东西)的文件夹。
Eg:
/
|--var
|---www
|----laravel
|----public_html
2。从您的 laravel 项目中的 laravel
文件夹(在服务器主机上)中复制除 public
文件夹之外的所有内容。
3. 打开你的 laravel 项目的 public 文件夹,复制所有内容并粘贴到 public_html
文件夹中(在服务器主机上)
4.现在打开public_html
文件夹中的index.php
文件,然后:
Change:
require __DIR__.'/../bootstrap/autoload.php';
To:
requrie require __DIR__.'/../laravel/bootstrap/autoload.php';
And
Change:
$app = require_once __DIR__.'/../bootstrap/app.php';
To:
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
Save and close.
5。现在转到laravel
文件夹并打开server.php
文件
Change:
require_once __DIR__.'/public/index.php';
To:
require_once __DIR__.'../public_html/index.php';
Save and close.
现在,当您使用服务器访问配置为域的 url 时,您的 laravel 应用程序应该可以像在 localhost 上一样工作。
注意:config/app
中的 'url'=>'someurl'
由 artisan 即 cli 使用,它对您的网络服务器 URL 没有任何影响。
希望能帮助到你。
编辑
完成上述操作后,如果您在尝试访问 url 时出现空白页面,请递归设置存储文件夹的写入权限。即存储中的所有文件夹及其子文件夹应具有权限 775
为网络服务器所有者和组设置有写权限。
如果您不打算在存储文件夹中存储任何敏感信息,您还可以将权限设置为777
,以授予对存储文件夹的所有读取、写入和执行权限。
注意 linux 中的文件权限,它们就像一把双刃剑,如果使用不当,可能会使您的应用容易受到攻击。要了解 Linux 文件权限,您可以阅读 this
【讨论】:
谢谢。我按照你说的做了,但现在我得到一个空白页。我已授予对存储、供应商和引导程序>缓存的读/写访问权限。会有什么错误。 这通常是由于缺少对存储的写入权限而发生的。请确保 storage 文件夹中的每个文件夹及其所有子文件夹都具有 webserver 组或用户的写入权限。有时很容易忘记递归地设置写权限,即存储文件夹本身具有写权限,但其子文件夹没有写权限。核实。另外,如果您使用 devtools,它会显示任何错误吗? 这对我有用。但是我使用的是 Laravel 5.5.13,但我没有意识到,但我必须将 (1) PHP 设置为 >= 7.0 && (2) 确保授予 mysql 数据库用户对数据库的权限 && (3) 确保进行手动 php 迁移(从本地导出并导入到远程)。谢天谢地,我不必将权限设置为 777。 我还在.env
文件中更改了DB_HOST
、DB_DATABASE
、DB_USERNAME
和DB_PASSWORD
。然后从 cPanel,创建数据库,创建用户,然后重要的是,将用户添加到具有我给它“所有权限”的权限的数据库中。【参考方案4】:
完成上述步骤后。请检查几个 folcers 的读/写权限(即应该是 777):
存储、供应商和引导程序>缓存
检查 .htaccess 文件是否在 public_html 文件夹中或从 public 文件夹中复制。
最后检查php的版本应该高于5.5
它对我有用。干杯!!
【讨论】:
以上是关于将 Laravel 5 上传到服务器子文件夹的主要内容,如果未能解决你的问题,请参考以下文章