仅在共享主机中使用FTP部署Laravel 5

时间:2015-04-02 01:26:24

标签: php laravel ftp laravel-5 shared-hosting

我需要将laravel 5项目部署到客户端主机。

我的客户的计划是基本托管:没有cpanel或类似的Linux + MySql(即没有管理面板)。

我只能通过ftp访问,只能访问名为www.mycustomerweb.com的文件夹。这意味着我无法在www.mycustomerweb.com文件夹的同一级别创建目录。只在其中(我认为它被称为共享主机)。

一年前,我用这种方式部署了一个用Laravel 4制作的项目:

  1. 删除公用文件夹将其内容移动到根文件夹并更新index.php和bootstrap.php
  2. 在localhost(使用Xampp)完成整个项目
  3. 通过ftp。
  4. 将所有文件上传到www.myclientweb.com

    我的问题是:

    1. 我是否通过laravel 4项目完成所有工作?我是否已陷入安全问题(我的意思是,该网站是否安全)?

    2. 如何将laravel 5项目部署到同一站点?在Laravel 5中,我无法像Laravel 4那样摆脱公共文件夹。

    3. 现在,我已在localhost上设置了Laravel 5的全新安装,然后我通过ftp将所有文件上传到www.myclientweb.com文件夹:

      当然这不是正确的方法......

      我通过网络和Stackoverflow进行了长时间的搜索而没有运气。

      真的很感激任何帮助。

      感谢阅读。

5 个答案:

答案 0 :(得分:10)

  1. 我创建了一个名为" protected"
  2. 的新文件夹
  3. 移动除" public"文件夹进入"受保护"夹
  4. 全部进入"公众"文件夹到root
  5. 在根文件夹中编辑index.php(来自公用文件夹),
  6. 修改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';

答案 1 :(得分:8)

更新
这是一个冒险的过程。通过使用此功能,您可以为恶意用户授予查找错误的权限。比如, http://project-url/storage/logs/laravel.log 仍然是开放的。


上一个答案:
那些几乎没有检查评论的人, @Andrew F.已经给出了答案。
但他错过了其他一些文件,如作曲家和包。
格式化答案是:     

            
  1. 将公共文件中的每个文件移动到父文件夹。
  2.         
  3. 更新index.php中的路径。
  4.         
  5. 将以下行添加到.htaccess:
    RewriteRule ^(server\.php|gulpfile\.js|\.env|composer.*|package.*) - [F,L,NC]
            
  6.     

答案 2 :(得分:2)

L4和L5之间没有区别,所以你对L4做了同样的事情。

答案 3 :(得分:2)

如果您尝试将Laravel 5.1运行到共享主机空间,或者您尝试将laravel 5 / 5.1放入共享主机上的子目录中,那么您可以像这样访问它:

http://mywebsite.com/mylaravel/

所以这个答案适合你,首先要确保你见面

Laravel 5.1要求:

- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL

这里有两个教程:

Link 1

Link 2

答案 4 :(得分:0)

在Apache中,您可以实现类似

    RewriteEngine on
    RewriteBase /

  # Rewrites all URLS without blog in them
    RewriteCond %{REQUEST_URI} !^/blog/

  # Rewrites all URLS [Replace "example" with the actual domain, without the TLD (.com, .net, .biz, etc)]
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.

  # Rewrite all those to insert /folder
    RewriteRule ^(.*)$ /blog/$1 [L]