我有这行代码:
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脚本时,我无法运行该命令。有什么想法吗?
修改 现在我确定它已正确转义。
答案 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需要双反斜杠。还要考虑检查错误代码。