Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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 shell执行创建动态命令_Php - Fatal编程技术网

PHP shell执行创建动态命令

PHP shell执行创建动态命令,php,Php,下面的命令搜索目录中的文件并将其压缩,效果良好 $command = "cd {$root}/files && mkdir -p {$identifier} && zip -jFS -0 {$root}{$zipname} 2491/'test&.txt'"; exec($command); 但是将文件更改为变量不允许shell执行,下面的代码不起作用 $container_name = "2491"; $files = Array ( '0'

下面的命令搜索目录中的文件并将其压缩,效果良好

  $command = "cd {$root}/files && mkdir -p {$identifier} && zip -jFS -0 {$root}{$zipname}  2491/'test&.txt'";
  exec($command);
但是将文件更改为变量不允许shell执行,下面的代码不起作用

$container_name = "2491";
$files = Array ( '0' => 'test&.txt' ,'1' => 'test5.txt','2' => 'test6.txt');
$files = " " . $container_name . "/'" . implode("' " . $container_name . "/'", $files) . "'";
$files = str_replace('$', '\$', $files);
$command = "cd {$root}/files && mkdir -p {$identifier} && zip -jFS -0 {$root}{$zipname} {$files}";
exec($command);
$root、$identifier、$zipname没有引起问题,它的$files可能是什么问题

更新

执行前$command的var_转储:

string(128) "cd /var/www/files && mkdir -p zip--1 && zip -jFS -0 /var/www/files/zip--1/1002_22-06022-06022-_content.zip 2491/'test&.txt'" 
如果我以

exec("cd /var/www/files && mkdir -p zip--1 && zip -jFS -0 /var/www/files/zip--1/1002_22-06022-06022-_content.zip 2491/'test&.txt'");
运行良好

错误响应:


zip错误:无事可做!(/var/www/files/zip--1/1002_22-06022-06022-_content.zip)

我解决了这个问题,问题是文件名有
'&
,改成
',从而中断该命令。为了得到它,我用[htmlspecialchars\u decode]传递了文件名。

执行后是否可以发布
$command
变量的输出?在执行该命令之前,转储它,并检查它是否与不使用变量时完全相同。@preinheimer getting zip error:无事可做!(/var/www/files/zip--1/1002_22-06022-06022-_content.zip)作为命令执行响应。@preinheimer-var_执行后命令的转储看起来像“cd/var/www/files&&mkdir-p zip--1&&zip-jFS-0/var/www/files/zip--1/1002_22-06022-06022--u content.zip 2491/'test&txt”,您的编辑没有明确说明。您的哪个命令给了您
zip错误:无事可做消息?之前的命令表示它“运行良好”。