在共享主机中仅使用 FTP 部署 Laravel 5
Deploy Laravel 5 using only FTP in a shared hosting
我需要将 laravel 5 项目部署到客户端主机。
我客户的计划是基本托管:Linux + MySql 没有 cpanel 或类似的(即没有管理面板)。
我只能通过 ftp 访问,并且只能访问名为 www.mycustomerweb.com 的文件夹。这意味着我无法在 www.mycustomerweb.com 文件夹的同一级别创建目录。只在里面(我觉得叫shared hosting)。
一年前,我这样部署了一个用Laravel 4做的项目:
- 删除了 public 文件夹,将其内容移动到根文件夹并更新 index.php 和 bootstrap.php
- 在本地主机中完成整个项目(Xampp)
- 已通过 ftp.
将所有文件上传到 www.myclientweb.com
我的问题是:
我在 laravel 4 项目上做的一切都好吗?我可能陷入了安全问题(我的意思是网站安全吗)?
如何将 laravel 5 项目部署到同一站点?在 Laravel 5 中,我无法像 Laravel 4 那样删除 public 文件夹。
现在,我已经在本地主机上设置了 Laravel 5 的全新安装,然后我通过 ftp:
将所有文件上传到 www.myclientweb.com 文件夹
- 我可以在 http://www.myclientweb.com/public 看到 laravel 的欢迎页面。
- 我在 http://www.myclientweb.com/
看不到任何东西
- 而且我还能在 http://www.myclientweb.com/.env 看到 .env 内容 ????????
当然这不是正确的方法...
我在网络和 Whosebug 上搜索了很长时间,但没有成功。
非常感谢任何帮助。
感谢阅读。
L4 和 L5 没有区别,所以做与 L4 相同的事情。
如果您正在尝试 运行 Laravel 5.1 进入共享主机 space 或者您正在尝试将 laravel 5/5.1 放入共享主机上的子目录托管以便您可以像这样访问它:
http://mywebsite.com/mylaravel/
所以这个答案是给你的,首先确保你满足
Laravel 5.1 要求:
- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL
这里有两个教程供您参考:
更新
这是一个有风险的过程。通过使用它,您可以授予恶意用户查找错误的权限。比如,http://project-url/storage/logs/laravel.log 仍然开放。
上一个答案:
那些几乎不检查评论的人,
@Andrew F. 已经给出了答案。
但他错过了一些其他文件,如 composer 和 package.
格式化的答案是:
- 将 public 中的每个文件移动到父文件夹。
- 更新 index.php 中的路径。
- 将以下行添加到 .htaccess:
RewriteRule ^(server\.php|gulpfile\.js|\.env|composer.*|package.*) - [F,L,NC]
- 我创建了一个名为 "protected"
的新文件夹
- 将 "public" 文件夹以外的所有文件夹移至 "protected" 文件夹
- 将 "public" 文件夹内的所有内容移动到根目录
- 在根文件夹(来自 public 文件夹)中编辑 index.php,
编辑require __DIR__.'/../bootstrap/autoload.php';
进入 require __DIR__.'/protected/bootstrap/autoload.php';
同时编辑 $app = require_once __DIR__.'/../bootstrap/app.php';
进入 $app = require_once __DIR__.'/protected/bootstrap/app.php';
我需要将 laravel 5 项目部署到客户端主机。
我客户的计划是基本托管:Linux + MySql 没有 cpanel 或类似的(即没有管理面板)。
我只能通过 ftp 访问,并且只能访问名为 www.mycustomerweb.com 的文件夹。这意味着我无法在 www.mycustomerweb.com 文件夹的同一级别创建目录。只在里面(我觉得叫shared hosting)。
一年前,我这样部署了一个用Laravel 4做的项目:
- 删除了 public 文件夹,将其内容移动到根文件夹并更新 index.php 和 bootstrap.php
- 在本地主机中完成整个项目(Xampp)
- 已通过 ftp. 将所有文件上传到 www.myclientweb.com
我的问题是:
我在 laravel 4 项目上做的一切都好吗?我可能陷入了安全问题(我的意思是网站安全吗)?
如何将 laravel 5 项目部署到同一站点?在 Laravel 5 中,我无法像 Laravel 4 那样删除 public 文件夹。
现在,我已经在本地主机上设置了 Laravel 5 的全新安装,然后我通过 ftp:
将所有文件上传到 www.myclientweb.com 文件夹- 我可以在 http://www.myclientweb.com/public 看到 laravel 的欢迎页面。
- 我在 http://www.myclientweb.com/ 看不到任何东西
- 而且我还能在 http://www.myclientweb.com/.env 看到 .env 内容 ????????
当然这不是正确的方法...
我在网络和 Whosebug 上搜索了很长时间,但没有成功。
非常感谢任何帮助。
感谢阅读。
L4 和 L5 没有区别,所以做与 L4 相同的事情。
如果您正在尝试 运行 Laravel 5.1 进入共享主机 space 或者您正在尝试将 laravel 5/5.1 放入共享主机上的子目录托管以便您可以像这样访问它:
http://mywebsite.com/mylaravel/
所以这个答案是给你的,首先确保你满足
Laravel 5.1 要求:
- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL
这里有两个教程供您参考:
更新
这是一个有风险的过程。通过使用它,您可以授予恶意用户查找错误的权限。比如,http://project-url/storage/logs/laravel.log 仍然开放。
上一个答案:
那些几乎不检查评论的人,
@Andrew F. 已经给出了答案。
但他错过了一些其他文件,如 composer 和 package.
格式化的答案是:
- 将 public 中的每个文件移动到父文件夹。
- 更新 index.php 中的路径。
- 将以下行添加到 .htaccess:
RewriteRule ^(server\.php|gulpfile\.js|\.env|composer.*|package.*) - [F,L,NC]
- 我创建了一个名为 "protected" 的新文件夹
- 将 "public" 文件夹以外的所有文件夹移至 "protected" 文件夹
- 将 "public" 文件夹内的所有内容移动到根目录
- 在根文件夹(来自 public 文件夹)中编辑 index.php,
编辑require __DIR__.'/../bootstrap/autoload.php';
进入 require __DIR__.'/protected/bootstrap/autoload.php';
同时编辑 $app = require_once __DIR__.'/../bootstrap/app.php';
进入 $app = require_once __DIR__.'/protected/bootstrap/app.php';