我正在尝试从文件夹中读取最新的文件。找到最新的文件后,我逐行读取它并使用条形码 Overprinter 软件在条形码打印机上打印它。该条形码打印机是我的服务器上的默认打印机。
这是我的 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()
and exec()
too
- 我尝试打开安全模式并将上述目录放在
safe_mode_include_dir
- 我尝试过替换双引号 (
"
) 带单引号 ('
).
- 我尝试给出完整路径(
C:\\wamp\\www\\
)
这些命令在命令提示符下运行良好。
那么,有什么办法可以运行shell_exec
PHP下以管理员身份执行命令?它似乎根本不想运行可执行文件(不仅仅是这个)。我在跑WAMP
on Windows 7
.
例如,shell_exec('dir')
工作正常,但是shell_exec('java')
没有。为什么不?
由于您无法运行任何可执行文件(例如 Java),因此这绝对是权限问题。该解决方案虽然出于安全原因不建议用于生产服务器,但是以管理员身份运行 WAMP 服务器。
See 这个链接 http://forum.wampserver.com/read.php?2,61302,71833有关如何操作的详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)