$_SERVER['HTTP_X_FILENAME'] 仅在 Go Daddy 上未定义


$_SERVER['HTTP_X_FILENAME'] undefined only on Go Daddy

嘿,所以我已经发送了一张支持票来爸爸,但他们不是很有帮助。在我的客户网站的一个管理面板中,有一个 AJAX 图像上传器。通常我不与Go Daddy合作,脚本与其他主机一直很好。但是,这个客户端迫使我处理Go Daddy混乱的系统,并且我在使AJAX图像上传器工作时遇到了麻烦。

问题似乎是根本没有定义$_SERVER['HTTP_X_FILENAME'],即使使用 HTTP 请求将文件发布到 PHP。

在我的PHP代码中,我有以下行来获取文件名:

$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);

在Go Daddy上,它返回假。另外,如果我print_r($_SERVER); HTTP_X_FILENAME甚至没有定义。

我已经检查了权限,所有内容都有正确的权限。我已经检查了错误日志,没有生成错误。我已经检查了 php.ini并且文件上传的最大容量为 32mb(比我测试过的任何文件都要大)

我不知道现在去哪里看,因为我的谷歌搜索什么也没找到。(服务器管理员真的不是我的强项)

任何帮助将不胜感激。

谢谢!!

好的,我得到了这个工作。不确定在使用管理员时如何管理在pw上保存文件。它们是直接保存到资产/文件/id/文件夹中还是某处有tmp?

    // We check if it is image upload
    $filename = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
    if ($filename) {
        $this->message("It is a file coming!");
        file_put_contents(  
            'C:/Temp/' . $filename,  
            file_get_contents('php://input')  
        );  
    } else {
        if(!$this->isAjaxPost) throw new WireException("This functionality may only be accessed from AJAX POST at present");
                    // etc etc...

}

现在我可以将我的文件保存到 C:/Temp/。不确定在这种情况下处理此问题的最佳方法?将其保存到临时文件夹并使用常规的pw API并保存文件?或者将其直接保存到资产/文件/id/文件夹,然后使用 API?我可以轻松地将更多数据(如字段名称)作为 http 标头发送。

如果我们将其直接保存到正确的位置(可能是安全的,因为这是管理员使用),我如何获得正确的路径? $config->路径->文件->3242 或类似的东西?