首页 > 解决方案 > move_uploaded_file 仅适用于短路径名

问题描述

我下载了一个名为“FileThingie”的 PHP 文件管理器,您可以在其中将文件上传到您的目录。它工作正常,但是当我尝试上传一个路径非常大(很多字符)的新文件时,PHP 给了我一个错误。

PHP 显示的错误是:

Warning: move_uploaded_file(../../archivos/admin_arch/2019/365 GRADOS EMPRESA NUMERO 1/01. ENERO/OPERACIONES/GRANDES DESARROLLOS/MI EMPRESA GENERICA SA DE CV/GENERALES/Prueba/CUMA_VH1_SED_SEM33_1.pdf) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\Project\Sistema\admin_arch\index.php on line 822


Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Windows\Temp\phpE1F.tmp' to '../../archivos/admin_arch/2019/365 GRADOS EMPRESA NUMERO 1/01. ENERO/OPERACIONES/GRANDES DESARROLLOS/MI EMPRESA GENERICA SA DE CV/GENERALES/Prueba/CUMA_VH1_SED_SEM33_1.pdf' in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\Project\Sistema\admin_arch\index.php on line 822

代码:

if (@move_uploaded_file($c['tmp_name'], $ruta_archivo_final )) {
    @chmod(ft_get_dir() . "/{$c['name']}", 0777);
    $msglist++;
    ft_set_message("Archivo subido correctamente. Nombre: " . $nomenclatura_temp);
    ft_invoke_hook('upload', ft_get_dir(), $c['name']);
}                  
                                } 

正如我告诉你的那样,如果路径名不是那么大(似乎有限制),它就可以正常工作,所以我认为权限没有问题。

提前致谢!

标签: php

解决方案


在 Windows 上使用节点(javascript)时,我一直都有这个问题。

这是一个 Windows 问题,PHP 完全可以处理长文件名。

来自:https ://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file

最大路径长度限制

在 Windows API(以下段落中讨论的一些例外情况)中,路径的最大长度为 MAX_PATH,定义为 260 个字符。

和修复(我还没有尝试过):

https://www.howtogeek.com/266621/how-to-make-windows-10-accept-file-paths-over-260-characters/


推荐阅读