从PHP调用WinSCP时没有运行

时间:2013-01-17 21:29:12

标签: php windows winscp

我有这行代码:

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

该命令在命令提示符下工作,我确信它已正确转义。另外,我将php安全模式设置为off,并且我的php.ini中没有disabled_functions。

当我调用php脚本时,我无法运行该命令。有什么想法吗?

修改 现在我确定它已正确转义。

1 个答案:

答案 0 :(得分: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需要双反斜杠。还要考虑检查错误代码。