- 我正在尝试使用 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 命令将安全执行,没有错误