【问题标题】:Laravel gives me blank page and 500 errorLaravel 给我空白页和 500 错误
【发布时间】:2023-04-08 23:10:02
【问题描述】:

我的项目使用的是 nginx+laravel,这个项目已经开发了几个月,之前一切都很顺利。但现在突然间它给了我所有路由的空白页和 500 个内部服务器错误。像这样的路线

Route::get('/', array('as' => 'homepage', 'uses' => 'FrontendPageController@test'));

根本不工作!但是,像这样的路线

Route::get('/', array('as' => 'homepage', function() {
    return 'hello';
}));

有效。以前有人遇到过这种情况吗?

【问题讨论】:

  • 500 错误 - 内部服务器错误类似于您的代码中的错误(在您请求的页面内)而不是在路由中
  • 我正在设置调试模式,但它并没有给我任何错误信息...
  • Route::get('/','FrontendPageController@test');这对你有用吗?
  • 不,它没有。即使在 FrontendPageController@test 中,也只是返回 'hello world';
  • 你检查过 routes.php 是否有两个 '/' 吗?

标签: laravel nginx


【解决方案1】:

我已经找出问题出在哪里,我有 2 个控制器,一个称为 UserController,另一个称为 OrderController。在我的代码中,它们相互依赖... UserController 构造函数如下所示:

class UserController extends BaseController {
    public $orderController;
    public function __construct(OrderController $orderController) {
        $this->orderController = $orderController;
    }
}

还有 OrderController:

class OrderController extends \BaseController {
    public $userController;
    public function __construct(UserController $userController) {
        $this->userController = $userController;
    }
}

在我删除了其中一个依赖项后,一切都恢复正常了。我很奇怪根本没有错误消息/调试信息......

【讨论】:

  • 对于 Laravel 的一切,请永远不要依赖控制器中的控制器。当然永远不要在任何地方创建循环依赖。那里有两个可怕的反模式。
  • 是的,在花了一下午的时间调试后同意了……所以你介意分享一下你会为这种情况注入什么依赖项吗?模型可能吗?
  • 型号,没有。如果您想要跨多个控制器的共享服务,请创建一个包含所有业务逻辑的服务。作为另一个步骤,通过在服务和 DAL 之间放置一个存储库来抽象模型
  • 我想从另一个控制器调用一个控制器中的函数,比如说在 UserController 中,我想调用 ImageController->getAvatarImageInfo() 来获取用户的头像图像信息,或者可能调用 PaymentController->makePayment () 在 OrderController 中创建新订单时......所以你说最好将所有这些类型的功能放在服务中?像 Laravel 中的服务提供商?
  • 服务提供商不会注册服务。您将逻辑放在可以注入控制器的单独类中。你的想法是正确的,你想重用代码但错误地实现它。例如,制作具有图像功能的图像服务。然后将其注入两个控制器并照此使用。
猜你喜欢
  • 2014-04-02
  • 2012-05-05
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 2016-06-19
  • 2017-07-16
相关资源
最近更新 更多