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

PHP上传PDF至多文件夹失败:上级路径文件夹未收到文件求助

PHP多文件夹PDF上传失败排查方案

问题重现

代码可成功将PDF上传至uploadfile文件夹,但无法同步到../t1/admin/uploadfile,原代码如下:

$uploaddir="uploadfile";
$uploaddir1="../t1/admin/uploadfile";
$type=$_FILES["file"]["type"];
$path=$uploaddir.'/'. $_FILES['file']['name'];
$path1=$uploaddir1.'/'. $_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'],$path);
copy($path, $path1);

解决方案

1. 检查目标文件夹权限

确保../t1/admin/uploadfile文件夹存在,且PHP运行进程(如www-data、apache)拥有写入权限。可通过命令行设置:

chmod -R 755 ../t1/admin/uploadfile
chown -R www-data:www-data ../t1/admin/uploadfile

2. 验证路径正确性

相对路径可能因脚本所在目录解析错误,建议用绝对路径确认:

// 输出目标文件夹的绝对路径
echo realpath($uploaddir1);

若输出为空或不符合预期,修正为绝对路径,例如:

$uploaddir1 = $_SERVER['DOCUMENT_ROOT'] . '/t1/admin/uploadfile';

3. 添加错误检测定位问题

在复制操作后加入错误判断,直接获取具体失败原因:

if (!move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
    die('主文件夹上传失败:' . error_get_last()['message']);
}
if (!copy($path, $path1)) {
    die('目标文件夹复制失败:' . error_get_last()['message']);
}

4. 优化上传逻辑(直接复用临时文件)

无需先移动到主文件夹,直接从临时文件同步到两个目标路径,减少中间步骤:

$tmp_file = $_FILES['file']['tmp_name'];
$filename = $_FILES['file']['name'];

$path = 'uploadfile/' . $filename;
$path1 = '../t1/admin/uploadfile/' . $filename;

// 同步上传至两个文件夹
move_uploaded_file($tmp_file, $path);
move_uploaded_file($tmp_file, $path1);

注:临时文件会在脚本执行结束后自动删除,需确保两次操作在同一次请求内完成。


内容的提问来源于stack exchange,提问作者admin intis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:45:35