我想從文件夾中讀取最近的文件。找到最新的文件後,我逐行閱讀並使用條碼Overprinter軟件將其打印到條碼打印機上。此條形碼打印機是我的服務器上的默認打印機。PHP不能用於shell_exec(),system()或passthru()
這是我的PHP代碼:
<?php
$files = glob('C:\barcode\*.*');
$files = array_combine($files, array_map('filectime', $files));
arsort($files);
echo key($files); // for testing
$handle = @fopen(key($files), "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer; // for testing
$retval=passthru("BarcodeGenerator.exe ".$buffer.",,Code128,0");
// based on http://www.free-barcode.com/CommandLineBarcode.htm
echo $retval;
}
if (!feof($handle)) {
echo "Error:\n";
}
fclose($handle);
}
?>
上面的命令行運行在我的命令行提示符不錯,但它在PHP腳本沒有。 程序掛起。什麼都沒發生。如果我評論passthru線,一切都很好。該程序執行。
這是我到目前爲止已經試過:
- 經過PHP是否在安全模式下運行。不是。
- 關閉Windows防火牆。
- 我已經運行命令
calcs /g BarcodeGenerator.exe everyone:F
- 我已將可執行文件和相關文件複製到wamp \ www文件夾。上面的代碼(壞主意,但我仍然這樣做)和redid calcs。
- 我已將UAC設置更改爲最低
- 我的系統上當前沒有運行防病毒軟件。
- 我試過
system()
,shell_exec()
和exec()
太 - 我試着開啓安全模式,並把上面的目錄
safe_mode_include_dir
- 下,我試着更換雙引號(
"
)用單引號('
) 。 - 我試着給的完整路徑(
C:\\wamp\\www\\
)
的命令運行在命令提示符罰款。
那麼,有什麼辦法在PHP下以管理員身份運行shell_exec
命令嗎?它似乎並不想運行一個可執行文件(不僅僅是這個)。我在Windows 7
上運行WAMP
。例如,shell_exec('dir')
工作正常,但shell_exec('java')
不。爲什麼不?
它掛起,還是產生一個你看不到的錯誤(因爲沒有啓用錯誤報告),你在等待永遠不會出現的輸出嗎? – CodeCaster
它只是掛起,直到超時。沒有錯誤產生。錯誤報告已啓用。 – Ank
您是否嘗試查看apache用戶是否有權執行? –