gpt4 book ai didi

php - 无法使用 php 将从 js 接收的文件移动到 Linux 服务器上的另一个文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:23 24 4
gpt4 key购买 nike

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

这是我的代码

$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(这是我的日志文件的输出)
  • 对于此文件,文件不会移动到所需的文件夹中,但当我将文件名更改为“ab”时,文件会被移动
  • 我还检查了几个网站,了解 mp 命令允许的最大长度,该长度为 131072 字节,比我的命令长度 153 字节多得多
  • 提前感谢您的帮助

找到原因但未解决

  • 这种奇怪行为的原因是文件名中的“空格”和“()”或除“_”之外的任何其他字符,但我想要解决方案,因为我无法限制用户的文件名,并且我想使用相同的名称保存它

最佳答案

解决方案很简单,将文件名中的其他字符(空格、(、[等)替换为下划线

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

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

关于php - 无法使用 php 将从 js 接收的文件移动到 Linux 服务器上的另一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35358927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com