3

我正在尝试从文件夹中读取最新的文件。找到最新文件后,我正在逐行读取并使用条形码套印软件在条形码打印机上打印。此条码打印机是我服务器上的默认打印机。

这是我的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')没有。为什么不?

4

1 回答 1

2

由于您无法运行任何可执行文件,例如 Java,这绝对是权限问题。该解决方案虽然出于安全原因不推荐用于生产服务器,但以管理员身份运行您的 WAMP 服务器。

有关如何执行此操作的详细信息,请参阅此链接。

于 2012-06-12T22:53:49.057 回答