无法使用 PHP 将从 JS 接收的文件移动到 Linux 服务器上的另一个文件夹中


not able to move file received from js in to another folder on linux server using php

  • 我正在尝试使用 PHP 将使用 POST 从 js 收到的文件移动到 linux 服务器上的另一个文件夹
  • shell_exec并将 move 命令打印在一个文本文件中以供我参考,以便我可以验证命令是否正确

这是我的代码

$command = "mv ".$file_tmp_name." ".$curr_dir."/wiresharktraces/".$file_name;
$log_string = "command = $command 'r'n";    
fwrite($file, $log_string); 
shell_exec("mv ".$file_tmp_name." ".$curr_dir."/wiresharktraces/".$file_name);
  • 当文件名较短时,此代码运行良好,但对于较大的文件名,代码无法正常运行,无法移动文件
  • 命令 = mv/tmp/phpZRDvIp/var/www/html/web/auto/exfo/excelautomation/wiresharktraces/5.3.3.1 使用服务 GW 更改(SGW_MME(.pcap 跟踪区域更新过程(这是我的日志文件的输出(
  • 对于此文件,文件
  • 不会移动到所需的文件夹中,但是当我将文件名更改为"ab"时,文件被移动
  • 而且我还检查了一些网站,了解 MP 命令的最大允许长度,该长度比我的命令长度 153 大得多 131072 字节
  • 提前感谢您的帮助

找到原因而不是解决方案

  • 这种奇怪行为的原因是文件名中的"空格"和"(("或任何其他字符,但我想解决,因为我无法限制用户名的用户,我想用相同的名称保存它

解决方案非常简单 将文件名中的另一个字符(空格、(、[等(替换为下划线

$file_name = preg_replace("/[^0-9,a-z,A-Z,.]/", "_", $file_name);

这将替换除数字、字母和 . 所以现在 Linux 命令将安全执行,没有错误