php - Laravel 无法从 URL 接收(处理)PHP 变量,但只能在远程接收
问题描述
我在我的控制器中剪断了这个非常简单的代码,它总是完成从 URL 获取 php 变量的工作: URL: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 保护(并重新启动服务器以确保没有缓存干扰)。换句话说:我已将服务器更改为only 并通过键入包含only
http
的 url 使用单独的浏览器访问它。http
解决方案
如果你的两个 Laravel 都有错误,那么这是 NGINX 配置错误。
这是它最基本的配置,看看你是否遗漏了什么:
server {
listen 80;
index index.php;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
此外,为您的代码提供一个小提示:如果您不再使用该值(您将其存储在$event
),您可以这样做以获得更好的代码:
$event = Input::get('event');
get
有第二个参数,默认情况下是null
. 'event'
如果URI 中不存在该参数,则该参数将是默认值。另外,请尝试始终使用Request
( $request
) 而不是 plain Input
。
推荐阅读
- swiftui - 嵌套的 ForEach + ScrollView Header 导致故障
- python - 如何检测熊猫整数序列之间的间隙?
- java - 来自 Java BlockingQueue 的工作项的并发有序处理
- google-apps-script - 我结合了两个 onedit 脚本,只有一个在工作
- python - 如何在 Windows 上清理 python print() 输出以进行管道?
- regex - 正则表达式验证
- python - 如何在 Python 中使用 grequest 为多个 REST 发布请求传递不同的有效负载
- angular - Angular:解码编码的 UNICODE 字符串以打印符号
- spring-boot - Spring Cloud Config 数据库后端 - 无法解析属性
- android - Android , 如何访问 SharePoint 数据?