我正在尝试从文件夹中读取最新的文件。找到最新文件后,我正在逐行读取并使用条形码套印软件在条形码打印机上打印。此条码打印机是我服务器上的默认打印机。
这是我的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 文件夹。上面的代码(坏主意,但我还是这样做了)并重新计算。
- 我已将 UAC 设置更改为最低
- 我的系统上当前没有运行任何防病毒软件。
- 我也试过
system()
了shell_exec()
exec()
- 我试过打开安全模式并将上面的目录放在
safe_mode_include_dir
- 我尝试用
"
单引号 ( ) 替换双引号 ('
)。 - 我试过给出完整路径(
C:\\wamp\\www\\
)
这些命令在命令提示符下运行良好。
那么,有没有办法shell_exec
在 PHP 下以管理员身份运行命令呢?它似乎根本不想运行可执行文件(不仅是这个)。我正在WAMP
运行Windows 7
。
例如,shell_exec('dir')
工作正常,但shell_exec('java')
没有。为什么不?