2015-04-15 41 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);