无法使用php将从js接收的文件移动到linux服务器上的另一个文件夹 我正在尝试使用php将使用POST从js接收的文件移动到linux服务器上的另一个文件夹 使用shell_exec并在一个文本文件中打印move命令以供参考,以便验证命令是否正确
这是我的代码无法使用php将从js接收的文件移动到linux服务器上的另一个文件夹 我正在尝试使用php将使用POST从js接收的文件移动到linux服务器上的另一个文件夹 使用shell_exec并在一个文本文件中打印move命令以供参考,以便验证命令是否正确,php,linux,Php,Linux,这是我的代码 $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); 当文件名较短时,此代
$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);
- 当文件名较短时,此代码运行正常,但对于较大的文件名,代码运行不正常,无法移动文件
- command=mv/tmp/phpZRDvIp/var/www/html/web/auto/exfo/excelsautomation/wiresharktraces/5.3.3.1跟踪区域更新过程,带有服务GW变更(SGW_MME).pcap(这是我的日志文件的输出)
- 对于该文件,该文件不会移动到所需的文件夹中,但当我将文件名更改为“ab”时,该文件将被移动
- 我还检查了一些网站,查看mp命令的最大允许长度,它是131072字节,比我的命令长度153字节多得多
- 提前谢谢你的帮助
- 出现这种奇怪行为的原因是文件名中的“空格”和“()”或除“u”之外的任何其他字符,但我需要解决方案,因为我不能限制文件名的用户,我想用相同的名称保存它
- 解决方案非常简单,用下划线替换文件名中的其他字符(空格、(、[)等)
$file_name = preg_replace("/[^0-9,a-z,A-Z,.]/", "_", $file_name);
这将替换除数字、字母和以外的所有其他字符。因此,现在Linux命令将安全地执行,不会出现错误,因为空格在文件名中。。但是,同样的文件,不同的名称如何正确地使用相同的代码我想你应该使用PHP内置的“重命名”函数,无需调用外部shell。我想执行这个command too shell_exec(“chmod 775”。$curr_dir./wiresharktraces/“$file_name”);php rename给我“600”作为权限,所以这个命令也有同样的问题