Это неправильная команда оболочки?

Вот моя экранированная команда оболочки, которую я запускаю через команду exec в PHP:

C:^\Program Files^\pngquant^\pngquant.EXE \"--force\" \"--ext=.png\" \"--\" \"F:\laragon\www\demo\images\uploads\43d67cba7a951378485882e5b515c825943f7d0a.png\"

Я получаю код возврата 1 (т.е. ошибка). С другой стороны, если я бегу pngquant "--force" "--ext=.png" "--" "F:\laragon\www\demo\images\uploads\43d67cba7a951378485882e5b515c825943f7d0a.png"прямо в оболочке, работает нормально.

Есть ли что-то не так с тем, как я избегаю команд и аргументов.

Изменить 1:
Вот моя команда PHP exec:

escapeshellcmd($this->cmd).' '.implode(' ', array_map('escapeshellarg', $args))

Где $ this-> cmd C:\Program Files\pngquant\pngquant.EXE а также print_r($args) является

Array(
[0] => "--force",
[1] => "--ext=.png",
[2] => "--",
[3] => "F:\laragon\www\demo\images\uploads\d3a2966596a94343b5a732368dcb79394a8d4d69.png")

-1

Решение

дела escapeshellarg($this->cmd).' '.implode(' ', array_map('escapeshellarg', $args)) очистил ошибку и изображение также было сжато. Странно что escapeshellcmd ставит контрольный символ (^) до \,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]