2013-07-11 123 views
-1
$exec = exec("net use LPT1: \\XXXXXX\PRINTER1 \\PERSISTENT:YES"); 
    $exec = exec("E:"); 
    $exec = exec("COPY OUT.TXT LPT1"); 

試過了shell_exec如何發送命令使用PHP

$exec = shell_exec("net use LPT1: \\XXXXXX\PRINTER1 \\PERSISTENT:YES"); 
$exec = shell_exec("E:"); 
$exec = shell_exec("COPY OUT.TXT LPT1"); 

試圖POPEN

$exec = popen("net use LPT1: \\XXXXXX\PRINTER1 \\PERSISTENT:YES", "r"); 
$exec = popen("E:", "r"); 
$exec = popen("COPY OUT.TXT LPT1", "r"); 

我已經嘗試了所有這一切在我的代碼命令提示符下,但我不能夠執行它..任何人都可以給一個解決方案

+0

調試它。看看出了什麼問題。 PHP運行的用戶可能無法執行這些命令。複製時也使用絕對路徑。 –

+0

@皮卡웃這些命令工作正常,如果我通過命令提示符運行 – dude

+0

您的觀點是...?這並不意味着PHP也可以運行該命令。查看這裏問題的源代碼:[如何調試exec()問題?](http://stackoverflow.com/q/12199353)瞭解如何在exec()命令時顯示錯誤消息。它們不會默認顯示。 –

回答

1

exec()將不會顯示您的電話可能產生的任何錯誤消息。

要調試問題,您需要使這些消息可見。從this question:

exec('(your command here) 2>&1',$output,$return_val); 
if($return_val !== 0) { 
    echo 'Error<br>'; 
    print_r($output); 
} 

而且偷,我不知道是否執行E:將真正改變工作目錄下面的命令(S)。你可能更適合使用絕對路徑:

exec("COPY E:\OUT.TXT LPT1"); 
+0

可以在這裏顯示上述問題的例子 – dude

+0

例如以上?你只需要在你的命令中寫上「你的命令在這裏」。 –

+0

whats變量$ output和$ return_val參考上面的例子 – dude

0

每個exec()(或其他shell)調用打開一個shell並再次關閉它。您必須將所有內容合併到一個exec()調用中,也可以使用批處理腳本。

+0

可以舉一個例子 – dude