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 需要双反斜杠。还要考虑检查错误代码。

于 2013-01-17T21:40:38.143 回答