首页 > 解决方案 > 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 上构建的过时应用程序开始产生类似的效果。

我的环境:

我尝试过但无济于事:

标签: phplaravelvariables

解决方案


如果你的两个 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


推荐阅读