【问题标题】:PHP: when going to end point it is not found locally but found remotelyPHP:到达终点时,在本地找不到,但在远程找到
【发布时间】:2019-11-13 12:05:51
【问题描述】:

对不起这个问题我对 PHP/Laravel 非常陌生(我是 Node 用户,必须深入研究这个遗留代码)。我有一台在本地运行的服务器,但是每当我使用 Postman 检查某些端点时,我都会收到 500 服务器错误的响应。 我运行了命令$ php artisan serve --port=8000 并得到了回复:

Laravel 开发服务器启动:http://127.0.0.1:8000

现在,每当我尝试向服务器发送任何请求 [localhost:8000/getTowns] 时,我都会收到 500 错误,并且在终端中没有堆栈跟踪或错误显示它是完全空的。

现在,当我使用命令 $ php -S localhost:8000 启动服务器时,我得到:

PHP 7.1.23 开发服务器于 2019 年 11 月 13 日星期三 12:55:52 开始

收听http://localhost:8000

文档根目录是 /Users/user/Desktop/legacy

按 Ctrl-C 退出。

然后当我提出任何请求时,我会得到

[Wed Nov 13 12:56:06 2019] ::1:59504 [404]: /getTowns - No such file or directory
[Wed Nov 13 12:56:07 2019] ::1:59505 [404]: /favicon.ico - No such file or directory

我不知道与此相关的任何信息,但是,我会在需要时使用更多相关代码进行更新。谢谢!

更新: 查看日志,我看到了很多:

laravel.EMERGENCY: Unable to create configured logger. Using emergency logger. {"exception":"[object] (InvalidArgumentException(code: 0): Log [] is not defined.

laravel.ERROR: Unable to prepare route [/] for serialization. Uses Closure. {"exception":"[object] (LogicException(code: 0): Unable to prepare route [/] for serialization. Uses Closure. 

【问题讨论】:

  • 嗨,抱歉确保它们都在同一个端口上,这只是我的一个错字,但错误仍然是一样的
  • 使用 127.0.0.1 和 localhost 有什么区别? host localhost 的输出是什么?
  • 问题是一样的
  • 在运行 php artisan serve 之前您是否“安装了作曲家”?
  • 如果省略 getTowns 部分会怎样? 500 响应代码意味着逻辑错误。

标签: php laravel


【解决方案1】:

可能是一个愚蠢的事情或问题中的错字,但发布的消息说 laravel 开发服务器在端口 3000 上运行。您发出的请求在端口 8000 上。如果您的端口实际上是正确的(又名,例如默认的 8000),我最好的猜测是你还没有运行 composer install 在项目根文件夹('legacy')中。

对于 php 本机服务器,您将在项目所在的“旧”文件夹中启动它。 Laravel 项目的 webroot 应该在项目的“public”文件夹中(又名“legacy/public”——在你的情况下我会假设)。


编辑: 根据无法成功运行composer install

问题是可能如下所示的路线:

Route::get('/some/route', function() {
   return 'Hello World';
});

这个路由使用了一个闭包,它不能被序列化。您应该更新它,以便它使用 Controller 方法。

类似

Route::get('/some/route', 'UserController@getIndex');

干杯!

【讨论】:

  • 这是我检查的一个错字,他们都在做同样的事情
  • @Ctfrancia 。 - 如果您从 legacy 中的 public 文件夹而不是实际的 legacy 文件夹启动本机 php 服务器 (php -S localhost:8000) 会怎样?另外,你有没有在'legacy'文件夹中运行composer install -o
  • 我运行了composer.lock 文件所在的命令,然后按照命令我现在收到一个错误:在 Route.php 第 917 行:无法为序列化准备路由 [/]。使用闭包。脚本 php artisan 优化处理返回错误代码 1 的 post-update-cmd 事件
  • @Ctfrancia 在这种情况下,问题很清楚。您在某处使用了使用 Closure 函数的路由定义。我已经更新了我的答案。但是对于最初的问题,应该清楚的是无法运行 composer install 是一个核心问题。
  • 您的更新解决了路线错误,有一个就像提到的那样。我认为,由于它是遗留的,并且遵循其他一些 stackoverflow 问题和答案,是我从旧版本更新到新版本以及发生了变化的事情......这会变得丑陋哈哈!谢谢你的帮助!
猜你喜欢
  • 2018-03-09
  • 2020-02-09
  • 1970-01-01
  • 2017-09-04
  • 2020-10-10
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
  • 2020-12-24
相关资源
最近更新 更多