【问题标题】:Laravel on shared hosting - subdomainLaravel 共享主机 - 子域
【发布时间】:2015-04-12 08:23:18
【问题描述】:

我正在尝试在共享主机上部署我的 laravel 应用程序。它应该部署在 www.subdomain.something.com

我的文件夹结构是:

    /laravel
       app/
       vendor/
       bootstrap/
       server.php
       artisan
       composer.json
       composer.lock
       phpunit.xml
   /public_html
       subdomain/
       index.php

我的 index.php 有以下路径:

require '/../../laravel/bootstrap/autoload.php';
$app = require_once '/../../laravel/bootstrap/start.php';

我的路径.php

'app' => __DIR__.'/../../laravel/app',
'public' => __DIR__.'/../../public_html/subdomain',
'base' => __DIR__.'/../../laravel',
'storage' => __DIR__.'/../../laravel/app/storage',

谁能看到我错过了什么?我尝试了谷歌,并找到了一堆分步解释,但似乎没有任何效果 - 它导致 500 内部服务器错误。

感谢您的反馈

韦斯利

【问题讨论】:

  • 你是否将子域的文档根映射到 Laravel 的 public 目录?
  • 我没有公共目录了,公共目录的内容现在直接在 public_html/subdomain 对不起,如果我没有意义,我没有太多的部署经验在共享主机上...
  • 你说得很有道理。将其称为public 是我的错误,我应该说public_html/subdomain。但问题是一样的,子域的文档根是否指向那个目录?如果这是您不知道如何配置的东西,那么如果您指定您使用的托管公司可能会有所帮助。
  • 经过大量搜索后,我已从使用共享主机切换到我在云中拥有的虚拟服务器上的 Apache。现在一切似乎都正常了......不过还是感谢您的建议!

标签: php laravel deployment subdomain shared-hosting


【解决方案1】:

遵循第一条规则here。 如果您使用第一条规则,那么一切都应该正常。但不知何故,如果你面对500 Internal Server Error 然后通过ssh 登录到你的服务器public_html 目录并给出以下命令。

sudo chmod 755 -R laravel

chmod -R o+w laravel/storage

这里 laravel 是你的 Laravel 项目目录。

【讨论】:

    【解决方案2】:

    确保您对app/storage/ 和所有子目录具有写入权限。这听起来像是罪魁祸首,但如果不是,请查看app/storage/logs 目录中是否有任何错误。如果不行,看看能不能解析服务器日志。

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题并找到了解决方案。也许有人可以得到帮助,

      Install LARAVEL 5 Locally Same as Share Hosting Directory (Deploy L5 Share Hosting Solution)

      【讨论】:

        【解决方案4】:

        我尝试在 DreamHost 上的共享主机上部署我的第一个 Laravel 8 应用程序,但确实遇到了一些问题。

        1. 首先我无法使用作曲家。 Composer 1 可用,但是我无法将其升级到 Composer 2。(出现错误)
        2. 最后,我最终将所有文件从本地系统上传到子域根文件夹(例如 cota.mydomain.com)
        3. 当我尝试 cota.mydomain.com 时,出现 404 错误。
        4. 当我将 url 更改为 cota.mydomain.com/public/index.php 时,应用程序开始工作。但是,所有定义为 href="/home" 或 href="/client/create" 的 href 链接都开始出现“未找到”错误。为了解决这个问题,我不得不在 href 中使用命名路由,例如href=" {{ route('client.show',['id'=>$client->id]) }}"。这解决了问题,但是,显示的 URL 包括 public/index.php,例如cota.mydomain.com/public/index.php/client/show/1
        5. 为了进一步解决该问题,我将子域的 Web 文件夹(根文件夹)更改为包含公共,即 cota.mydomain.com/public
        6. 接下来我在 cota.mydomain.con 中添加了一个 index.php,内容如下 header("Location: http://www.cota.mydomain.com/public/index.php"); die();
        7. 这解决了所有问题,包括从链接 URL 中删除 public 和 index.php。

        【讨论】:

          猜你喜欢
          • 2019-01-28
          • 2021-06-28
          • 1970-01-01
          • 1970-01-01
          • 2015-01-16
          • 2018-11-29
          • 2018-06-21
          • 2018-07-07
          • 2018-06-02
          相关资源
          最近更新 更多