0

私はこのコード行を持っています:

shell_exec("\"C:\Program Files (x86)\WinSCP\winSCP.exe\" /console /script=c:\\wamp\\www\\client\\transfer_script.txt");

コマンドはコマンドプロンプトで機能し、正しくエスケープされていると確信しています。また、phpセーフモードをオフに設定しており、php.iniにdisabled_functionsはありません。

phpスクリプトを呼び出すと、コマンドを実行できません。何か案は?

編集: 今、私はそれが適切にエスケープされていると確信しています。

4

1 に答える 1

1

きちんと逃げられたとは思いません。検討:

// As you have it:
$cmd = "\"C:\Program Files (x86)\WinSCP\winSCP.exe\" /console /script=c:\wamp\www\client\transfer_script.txt";
echo $cmd;

> "C:\Program Files (x86)\WinSCP\winSCP.exe" /console /script=c:\wamp\www\client ransfer_script.txt

それは正しく見えません。引用符の外側でバックスラッシュを二重にエスケープしてみてください(スクリプトソースを指している場合)。

$cmd = "\"C:\Program Files (x86)\WinSCP\winSCP.exe\" /console /script=c:\\wamp\\www\\client\\transfer_script.txt";
echo $cmd;

> "C:\Program Files (x86)\WinSCP\winSCP.exe" /console /script=c:\wamp\www\client\transfer_script.txt

より良い。

アップデート

それでも問題が解決しない\\\\場合は、Windowsで二重円記号が必要な場合に備えて、を使用して4つの記号でエスケープしてみます。エラーコードも確認することを検討してください。

于 2013-01-17T21:40:38.143 に答える