-1

これは、PHP で exec コマンドを使用して実行する、エスケープされたシェル コマンドです。

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"
)
4

1 に答える 1