PHP不适用于shell_exec(),system()或passthru()

时间:2012-06-12 22:33:36

标签: php command-line wamp

我正在尝试从该文件夹中读取最新文件。找到最新文件后,我正在逐行阅读并使用条形码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文件夹中。上面的代码(糟糕的主意,但我仍然这样做)和redid calcs。
  • 我已将UAC设置更改为最小
  • 我的系统上当前没有运行防病毒软件。
  • 我已尝试过system()shell_exec()exec()
  • 我尝试打开安全模式并将上述目录放在safe_mode_include_dir
  • 我尝试用单引号(")替换双引号(')。
  • 我尝试过提供完整路径(C:\\wamp\\www\\

命令在命令提示符下正常运行。

那么,有没有办法在PHP下以管理员身份运行shell_exec命令?它似乎根本不想运行可执行文件(不仅仅是这个)。我正在WAMP上运行Windows 7

例如,shell_exec('dir')工作正常,但shell_exec('java')没有。为什么不呢?

1 个答案:

答案 0 :(得分:2)

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

有关如何操作的详细信息,请参阅this link