You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下PHP8.0.26中move_uploaded_file/is_uploaded_file不识别SQL上传文件

为何is_uploaded_file与move_uploaded_file不认可POST上传的文件?

我编写了一个带简单表单的脚本,通过POST请求上传文件到网站目录,代码位于网站的include子目录,初始代码如下:

$uploaddir = dirname(dirname(__FILE__)) . '/uploads/';
$sqlfile = $uploaddir . $_FILES['sqlfile']['name'];
$tmpfile = $_FILES['sqlfile']['tmp_name'];

if (move_uploaded_file($tmpfile, $sqlfile)) {
    // Use $sqlfile
} else {
    echo "Can't move uploaded file"
}

这段代码无法正常运行,于是我尝试了以下写法:

if (is_uploaded_file($tmpfile)) {
    rename($tmpfile, $sqlfile);

结果依旧失败。

但如果跳过检测(或者写成if (is_uploaded_file($tmpfile) || TRUE)方便后续恢复),rename就能正常执行,文件也能正确保存到uploads目录中。

我可以维持当前代码,但想搞清楚为什么is_uploaded_file和move_uploaded_file都不把我通过POST上传的文件视为有效文件。相关信息如下:

  • 上传的是名为backup_ac6_form_2023_09_05__17_53.sql的SQL脚本,大小约2M,类型为application/octet-stream
  • 临时文件路径:C:\myProgs\WampServer64\tmp\php1E7B.tmp
  • $_FILES和$sqlfile的print_r输出:
_FILES  _FILES['sqlfile'] _FILES['sqlfile']['name'] "backup_ac6_form_2023_09_05__17_53.sql"
_FILES  _FILES['sqlfile'] _FILES['sqlfile']['type'] "application/octet-stream"
_FILES  _FILES['sqlfile'] _FILES['sqlfile']['tmp_name'] "C:\myProgs\WampServer64\tmp\php1E7B.tmp"
_FILES  _FILES['sqlfile'] _FILES['sqlfile']['error']    "0"
_FILES  _FILES['sqlfile'] _FILES['sqlfile']['size'] "2061255"
sqlfile:    "D:/www.acsys.com.fr/next/www/ac6-edit/uploads/backup_ac6_form_2023_09_05__17_53.sql"

希望有人解析is_uploaded_file判定该文件为无效的检测逻辑。


内容的提问来源于stack exchange,提问作者Bernard Dautrevaux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:03:33