无法使用php

时间:2016-02-12 09:24:59

标签: php linux

  • 我试图将使用POST从js收到的文件移动到使用php的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);
  • 当文件名很短时,此代码运行正常但是对于更大的文件名,代码运行不正常,无法移动文件
  • command = mv / tmp / phpZRDvIp /var/www/html/web/auto/exfo/excelautomation/wiresharktraces/5.3.3.1跟踪区域更新程序,服务GW更改(SGW_MME).pcap(这是我的日志文件&# 39;输出)
  • 对于此文件,文件不会在所需的文件夹中移动,但是当我将文件名更改为" ab"文件被移动
  • 我还检查了一些网站,了解mp命令的最大允许长度,这比我的命令长度为153
  • 多131072字节
  • 提前感谢您的帮助

发现原因不是解决方案

  • 这种奇怪行为的原因是"空格"和"()"或者除了" _"之外的任何其他角色;在文件名,但我想要解决方案,因为我不能限制用户的文件名,我想用同名保存它

1 个答案:

答案 0 :(得分:0)

解决方案很简单,用下划线替换另一个字符(文件名中的空格,(,[等等)

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

这将替换除数字,字母和之外的所有其他字符。所以现在Linux命令将安全执行,没有错误