1

shell_exec() 関数を使用してphp(Windows IIS上)でファイルをコピーしています。私が使用しているコマンドは次のとおりです。

shell_exec("copy ..\\images\\$image_url temp\\$filename\\media\\image1.png");

画像名 ($image_url) の名前にスペースがなくなるまで、これは正常に機能しています。ただし、画像の名前にスペースがある場合、これは失敗します。

$image_url をエスケープする方法。どんな助けでも大歓迎です。

4

2 に答える 2

2

これを試して:

shell_exec("copy \"..\\images\\$image_url\" \"temp\\$filename\\media\\image1.png\"");

基本的にはコマンドプロンプトと同じです。パラメータにスペースがある場合は、それらを引用符で囲む必要があります。パラメータの周り - スペースの周りではありません。;-) あるパラメータがどこで終わり、別のパラメータがどこで始まるか、copy コマンドは他にどのように知る必要がありますか。

$image_urlまた、と$filenameが安全であることを確認してください。ユーザーが自分のコンテンツに影響を与える場合、システムで何でもできる可能性があります。気をつけて!

于 2012-11-02T11:43:32.457 に答える
0

「」に「\」のマークを付けます。

shell_exec("copy ..\\images\\".str_replace(" ", "\ ", $image_url)." temp\\".str_replace(" ", "\ ", $filename)."\\media\\image1.png");
于 2012-11-02T11:50:11.787 に答える