PHP图片上传功能异常求助:无法完成图片上传
排查PHP多文件上传失败的问题
先看你提供的$_FILES输出,文件的error码是0,说明文件已经成功上传到服务器临时目录了,问题出在你的move_uploaded_file调用上。
核心错误:用错了文件路径参数
你的代码里,move_uploaded_file的第一个参数用了$_FILES['files']['name']['0']——这只是用户上传的原始文件名,不是服务器上存储文件临时副本的真实路径。正确的参数应该是$_FILES['files']['tmp_name']['0'],这才是PHP为上传文件生成的临时文件地址。
修正后的代码
<?php error_reporting(E_ALL); // 目标目录(这里可以根据实际需求调整) $targetDir = __DIR__.'/../ticket/'; // 生成目标文件路径,同时用basename过滤文件名避免路径注入 $targetFilePath = $targetDir . basename($_FILES["files"]['name']['0']); if (move_uploaded_file($_FILES['files']['tmp_name']['0'], $targetFilePath)) { echo "Uploaded"; } else { echo "File was not uploaded"; } echo 'Some Information:'; print_r($_FILES); ?>
额外需要检查的细节
- 目录权限:确保
__DIR__.'/../ticket/'这个目录存在,并且PHP运行进程有写入权限(建议设置为755或775,尽量避免使用777)。 - 文件名冲突:如果有用户上传同名文件,会直接覆盖旧文件,建议给文件名加上唯一标识(比如时间戳或随机字符串),示例:
$uniqueFileName = uniqid() . '_' . basename($_FILES["files"]['name']['0']); $targetFilePath = $targetDir . $uniqueFileName; - PHP上传限制:检查
php.ini里的upload_max_filesize和post_max_size配置,确保它们大于你要上传的文件大小(当前文件约110KB,默认配置足够,但大文件需要调整)。
内容的提问来源于stack exchange,提问作者TooFast
相关产品推荐
相关产品推荐

