首页 > 解决方案 > PHP缺少参数,但没有错过,它只发生在生产中

问题描述

我一直在为我的公司编写一个内部工具,并且我对其进行了测试,并且一切正常,但是当它恰好在服务器上时,它会拒绝缺少参数的连接,这并不完全奇怪,因为我编写了该行为,但是当我在 localhost 中对其进行测试时,它的行为并非如此,我们目前正在数字海洋上部署工具,并且该工具以 JSON 格式接收数据

    include("./request.php");
    include("./urlParams.php");
    include("./conexion.php");

    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS");
    header("Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token");
    header("Content-Type: application/json");

    error_reporting(0);
    main($conexion);

    function main($conexion){
        //$values = getParams(array( 'webinarHash', 'fecha'));
        

        $data = json_decode(file_get_contents("php://input"), true);
        
        if( !( isset($data['webinarHash']) && isset($data['fecha']) ) ){
            $response = array('message' => 'Rechazado, argumento faltante');
            http_response_code(400);
            echo json_encode($response);
            die();
        }

        $webinarHash = $data['webinarHash'];
        $date        = $data['fecha']; 

拒绝的原因可能是什么?

标签: phpjsondigital-ocean

解决方案


如果没有更多的上下文,这很难说。

$conexion失踪了。确保在执行之前已定义main($conexion); 它可能在顶部的 3 个包含的 php 文件之一中定义。也许那里的代码没有正确初始化变量,因为逻辑在您的 prod 系统上的行为与在 localhost 上的行为不同。

如果给定的代码片段代表完整的main功能,您也可以$conexion完全删除该变量。


推荐阅读