2015-04-15 42 views
1

我迁移组PHP脚本的从窗口2003/PHP 5.2到Windows 2012 R2/PHP 5.6.7PHP:使用exec命令而不输出到CLI

在EXEC命令用于脚本,例如以复制文件。命令可能看起来像这样:

exec ('copy "C:\ftp\suppliername\upload\*.*" c:\somefolder\ >> output.log'); 

你可以说,有更好的方法来复制文件,但我宁愿不喜欢现在要重建这些脚本。

我遇到的问题是,当没有要复制的文件时,错误“系统找不到指定的文件”。现在显示出来了,但这不适用于旧服务器上的情况。

如果你只是在命令行中执行复制命令,输出看起来是这样的:

The system cannot find the file specified. 
     0 file(s) copied. 

这是一样的东西被写入output.log 所以显然是“0文件(S )复制“在某处被压制,但不是错误。

所以我的问题是,如何摆脱命令行上的错误?我认为这将是在php.ini中的一些配置,但比较旧的和新的服务器的php.ini后,我找不到任何本质区别。

我试过几件事情要取消错误,但没有成功:

  • 添加@给exec命令
  • 前和命令后添加ob_start()和ob_end_clean()

编辑:请不要标记为重复。在问我的问题之前,我确实看到了这个问题。给出的答案并不能解决我的问题。主要问题是,为什么它在以前工作,你会认为它应该仍然可以在没有修改脚本的情况下以相同的方式工作。

+0

的可能重复[抑制来自EXEC(输出)在PHP中调用(http://stackoverflow.com/questions/1606943/suppressing-output-from-exec-调用功能于PHP) – chris85

回答

0

尝试将“2> & 1”添加到您的命令中。

exec ('copy "C:\ftp\suppliername\upload\*.*" c:\somefolder\ >> output.log 2>&1'); 

这应该重定向错误输出到output.log

0

首先,您要复制命令的输出重定向到一个文本文件,所以它不会输出中去安慰。

难道不是这样:

exec ('copy "C:\ftp\suppliername\upload\*.*" c:\somefolder\', $output); 

var_dump ($output);