0
以下命令查找文件的目錄,並壓縮它,它運作良好PHP shell執行創建動態命令
$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有什麼問題?
更新
執行前的var_dump爲$命令:
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)
你可以在執行後發佈'$ command'變量的輸出嗎? – preinheimer 2014-12-01 15:51:46
執行該命令之前,轉儲它並檢查它是否與不使用變量時完全相同。 – vaso123 2014-12-01 15:51:46
@preinheimer得到zip錯誤:無事可做! (/var/www/files/zip--1/1002_22-06022-06022-_content.zip)作爲命令執行響應。 – arpitr 2014-12-01 16:04:01