Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用php将从js接收的文件移动到linux服务器上的另一个文件夹 我正在尝试使用php将使用POST从js接收的文件移动到linux服务器上的另一个文件夹 使用shell_exec并在一个文本文件中打印move命令以供参考,以便验证命令是否正确_Php_Linux - Fatal编程技术网

无法使用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”作为权限,所以这个命令也有同样的问题