【问题标题】:How to install Laravel in only the shared host's public folder?如何仅在共享主机的公用文件夹中安装 Laravel?
【发布时间】:2017-01-11 19:18:12
【问题描述】:

我正在学习 Laravel。有人告诉我,出于安全原因,它不应安装在共享主机上。但无论如何我都想这样做,因为这是我现在唯一的选择。

所以,我用谷歌搜索了如何“在共享主机上安装 Laravel”。但所有说明都是基于您将项目放在主机的 public/web 文件夹之外,然后将 Laravel 公共复制到主机的公共并更改索引文件中的路径。

但我不能这样做,因为我无权在主机上的公用文件夹的父文件夹中添加或更改任何内容。所以我需要一个解决方案,将 Laravel 安装在 public 文件夹中。

我知道,这绝对不是推荐的解决方案。但我还是想在这个学习阶段这样做。

如何在宿主的公用文件夹中设置整个 Laravel 包?

【问题讨论】:

  • 哪个版本的 Laravel?
  • 创建一个 Linux 虚拟机...选择任何发行版...并在那里工作 :)
  • 这可能取决于您的网络托管服务提供商,许多提供商可以为您提供jailed shh(如果您要求)帐户,这样您就可以访问父文件夹,也可以运行作曲家
  • Buglinjo,我认为是 5.1。 Hackerman 和 Vitalii Strimbanu,我最想知道是否可以按照我要求的方式进行操作,以及如何操作。
  • 你的问题的答案是真的,真的,“得到一个更好的主机”。

标签: php laravel laravel-5 shared-hosting


【解决方案1】:

如果它不重要,最好将所有 htaccess 文件中的 disallow 放在根目录中。然后,公开更新文件以允许所有人。然后使用http://example.com/public/ 访问您的网站(您将在http://example.com 获得403 拒绝)。

如果你绝对做不到。

  1. 您可能希望在其他 laravel 目录(即供应商、应用程序、存储等)中放置一个禁止所有其他目录(即供应商、应用程序、存储等)的 htaccess 文件(或等效文件,如果您正在运行 nginx)。 (我不能提供这个,因为 Apache 2.2 vs Apache 2.4 vs Nginx 是不同的,但是你可以谷歌搜索文件内容。)

  2. 然后,将 public 的内容移动到域根目录(即上一级)。

  3. 然后,编辑公开的 htaccess 文件以禁止访问所有隐藏文件、artisan、composer.json、composer.lock 以及 laravel 在根文件夹中的任何其他文件。

    李>
  4. 然后,在index.php中修改两个require语句,去掉bootstrap之前的../

我认为这会起作用,但我还没有尝试过,所以如果您遇到错误,请告诉我。

无论如何,请绝对确定无法下载.env 文件,因为您的所有密码都存放在该文件中。 http://example.com/.env 应该给你 403 拒绝。如果下载了,你就有麻烦了。

【讨论】:

    【解决方案2】:

    作为旁注;这是一个坏主意。您的所有代码都可能可供公众查看。

    最简单的方法就是将 Laravel 复制到 /public 文件夹中。

    然后,如果您使用的是 cPanel 之类的东西,您只需将域的根目录从 / 更改为 /public

    【讨论】:

    • "您的所有代码都将可供公众查看。"这是不是正确的。服务器配置错误可能会关闭 PHP 并暴露源代码是一种风险,但这不是自动的,也不是特别常见。
    • 正如我所说,我知道风险,但无论如何都想在这种情况下这样做。我可以从 ispconfig 的 DNS 管理器更改域根吗?什么记录?
    • @PeterWesterlund DNS 与它没有任何关系。
    • 好的,那么我不能更改域的根目录。
    • @Ceejayoz 有成千上万的共享托管服务提供商。我有很多经验。我确信我可以立即识别出几个会暴露这一点的人,所以我想这取决于哪个。不管怎样,这仍然是一个风险。
    猜你喜欢
    • 2017-05-15
    • 2020-12-04
    • 2020-11-06
    • 2013-07-05
    • 2019-08-01
    • 2019-06-27
    • 2015-01-16
    • 2017-08-05
    • 2019-12-22
    相关资源
    最近更新 更多