【发布时间】:2021-06-14 02:44:35
【问题描述】:
我在我的控制器中截取了这个非常简单的代码,它总是可以从 URL 获取一个 php 变量:
网址:wholesaleeventeditions/create?event=36
$wholesaleevent = Input::get('event');
if(isset($wholesaleevent)) {
$event = $wholesaleevent;
} else {
$event = null;
}
现在,在我迁移到新的 VPS 服务后,Laravel 8 无法处理该变量。一定是服务器问题,因为我在 Laravel 5.8 上构建的过时应用程序开始产生类似的效果。
我的环境:
- 本地:Windows 10,php 7.4.13 vc 15 TS,Laravel 8 和 Laravel 5.8,Apache 2.4.46 VS16(在最新的 Laragon 5.0 上)
- 远程:Ubuntu 20.10、Nginx 1.18.0、php 7.4.9
- Laravel 版本说明:Mu 最好的猜测是它一定与 Ubuntu 20.10 服务器配置有关,因为该错误破坏了我的一个单独的 Laravel 5.8 应用程序。虽然我会责怪 php 7.4 中的一个怪癖,但我不知道。
我尝试过但无济于事:
- 无奈之下,我将
$input = Input::get('event');更改为$input = Input::all();,然后再更改为$event = $wholesaleevent['event'];。该代码在本地运行,但在远程服务器上会产生“未定义索引:事件”错误。 - 我已在我的服务器中禁用 SSL 保护(并重新启动服务器以确保没有缓存干扰)。换句话说:我已将服务器更改为仅
http,并使用单独的浏览器通过键入仅包含http的 url 访问它。
【问题讨论】:
-
服务器运行为https模式时,使用http协议访问url不会从url或body中获取数据。例如:如果运行 https://example.com,使用 http://example.com?v=1 访问站点将不会产生 v 值
-
@joHN 你在说什么?
-
将第二个参数传递给输入 get,如果参数不存在,您将收到该值。它将帮助您调试。如果您使用的是 apache,还要检查 htaccess 或 vhost 是否配置正确
-
@joHN 这个解释不起作用。在寻找解决方案时,我通过将 Nginx 配置替换为旧配置并重新启动服务器来关闭 https 访问。所以我通过http而不是https访问了该网站。它没有帮助。
-
@Peter 那表示服务器没有接受查询参数。这不是 laravel 或 php 的问题。您的网络服务器配置不正确。