move_uploaded_file仅适用于短路径名

时间:2019-07-16 07:13:01

标签: php

我下载了一个名为“ 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']);
}                  
                                } 

正如我告诉您的那样,如果路径名不是那么大(似乎有限制),则可以很好地工作,因此我认为权限没有问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

在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/