【问题标题】:Laravel deployment - Fatal error: Call to a member function make() on stringLaravel 部署 - 致命错误:调用字符串上的成员函数 make()
【发布时间】:2019-11-23 08:43:29
【问题描述】:

我正在尝试部署 laravel 应用程序(Laravel 5.4.36),并将公共目录的内容上传到 public_html,其他文件夹上传到我的托管用户名的根页脚。

Index.php 路径被修改为根据新路径加载 bootstrap/autoload.php 和 bootstrap/app.php,并且我确保 index.php 有权访问这些文件。

问题是当我尝试访问 index.php 时收到此消息

  Fatal error: Uncaught Error: Call to a member function make() on string in /home/myuser/public_html/index.php:54 Stack trace: #0 {main} thrown in /home/myuser/public_html/index.php on line 54

这里提到的行是

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

我还尝试了几个 php 版本,7.1、7.2 和 7.3。 我在共享服务器上使用 Apache 和 Cpanel,但我也对该服务器具有 root 访问权限,因此我可以重新配置所需的内容。

我按照这个教程https://www.youtube.com/watch?v=6g8G3YQtQt4

【问题讨论】:

  • 更改laravel默认目录结构是否有特殊原因?
  • 我无法通过路径 www.mydomain.com/public 使网站可用,它应该只是 www.mydomain.com。公共文件在public_html里面,其他文件夹在parrent目录下。
  • 为此,建议更改您的 Web 服务器的配置。你用什么网络服务器?
  • 我可以完全访问此 Web 服务器。它是共享的,但我可以配置我想要的。
  • 尝试点击此链接:developerhowto.com/2018/11/12/…

标签: php laravel


【解决方案1】:

我发现了问题

$app 是字符串,我以某种方式将其更改为字符串,所以改为

$app =  require_once __DIR__.'/../bel/bootstrap/app.php';

原来是

$app =  __DIR__.'/../bel/bootstrap/app.php';

【讨论】:

    【解决方案2】:

    您按照以下步骤解决您的问题

    1. 为你的 laravel 项目创建一个新文件夹。

    2. 然后上传其中的所有内容,包括公用文件夹而不更改路径

    3. 按照以下步骤将根文件夹更改为 /public

    https://tecadmin.net/how-to-change-document-root-of-primary-domain-in-cpanel/

    要更改主/主域,您需要具有 root SSH 访问权限并能够找到和编辑以下文件(替换您的用户和域信息):

    /var/cpanel/userdata/USERNAME/DOMAIN.COM 1. 打开文件后,查找以下行:

    文档根目录:/home/USERNAME/public_html 2.根据需要修改位置。保存并退出。

    1. 重建 Apache conf 并重新启动 Apache:

    /scripts/rebuildhttpdconf 服务 httpd 重启 改变将是立竿见影的。只需清除浏览器缓存并强制刷新页面!

    或者你有另一个选择只是上传你的 laravel 文件夹旁边 public_html 和 public_html 的 laravel 公共文件夹中的所有文件而不更改路径

    【讨论】:

      猜你喜欢
      • 2019-02-11
      • 1970-01-01
      • 2015-07-27
      • 2017-02-27
      • 2017-03-24
      • 2021-05-16
      • 2016-10-01
      相关资源
      最近更新 更多