【问题标题】:PHP system/exec command not working properlyPHP system/exec 命令无法正常工作
【发布时间】:2012-09-13 08:12:15
【问题描述】:

这是我的代码:

$js = SPLoginEngage();
$data = getSilverpopReport($js,'09/01/2012');
$d1 = explode('<FILE_PATH>',$data);
$d2 = explode('</FILE_PATH>',$d1[1]);
sleep(30);
exec('CMD /C run.bat "/download/' . $d2[0] . '"');

运行.bat:

@ECHO OFF
start /b "" "C:\Program files\WinSCP\winscp.exe" "SFTP" /command "get "%1"" exit

当我运行脚本时,我得到这个返回:CMD /C run.bat "/download/Raw Recipient Data Export Sep 13 2012 08-07-54 AM 1371.zip"

它应该开始下载文件,但没有任何反应。

如果我将该输出放入 CMD 中,它就可以正常工作。

注意:运行 Windows 7(32 位)

【问题讨论】:

  • 请问,是什么反对浏览器为您进行下载? (这仅限于服务器托管脚本语言的本地客户端设置)
  • 这可能是一个 cli 脚本也打算在本地运行...
  • @Najzero 文件托管在远程 SFTP 上,浏览器无法执行下载。
  • 然后让服务器为(你php.net/manual/de/function.ssh2-sftp.php)拉文件 - 只是一个建议,对于大文件它是邪恶的;-)
  • @Najzero,由于某种原因,我无法让该库在我的 PC 上运行,这就是我使用这个外部应用程序的原因

标签: php windows command-line


【解决方案1】:

为什么在 exec 参数中调用 CMD?这不就是 exec 应该做的吗?

另外,你没有对 exec 的结果做任何事情。你怎么知道它是否已经执行了命令?

http://php.net/manual/en/function.exec.php

【讨论】:

  • 没有它也试过了,但它不起作用。据我了解,如果执行成功,exec/system 应该返回它执行的命令,如果失败则返回“false”。由于我得到了返回的命令行,我猜它成功了,但文件没有被下载
  • 尝试在 exec 调用中添加一个输出参数,并在完成后 var_dump 它的内容..也许这会告诉你更多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 2016-05-19
  • 2017-06-13
相关资源
最近更新 更多