gpt4 book ai didi

Windows 中的 PHP shell_exec 不写入 LPT1

转载 作者:可可西里 更新时间:2023-11-01 10:36:20 28 4
gpt4 key购买 nike

我正在将我从 Linux 编写的一小段代码移植到 Windows,我基本上需要将 ZPL 代码推送到通过 USB 连接的 Zebra 打印机。 linux 中的 shell_exec 和 lp 没有问题。

在 Windows 上,我将 USB 打印机映射到 LPT1,这里没有问题,如果我将我的代码(或复制文件)回显到 LPT1(在 cmd 中),一切正常。喜欢:

copy C:\zplcode.txt LPT1 *or* echo "zplcode here" > LPT1

我的东西被打印了。

现在,就像我说的那样,这在 cmd 中完美无缺,但如果我 shell_exec 这个,它就不起作用。我以为 shell_exec 根本不起作用,但它确实起作用了。事实上,echo shell_exec('ver') 返回我的 windows 版本。而 copy C:\zplcode.txt LPT1 在 cmd 中返回“1 file copied”,echo shell_exec('copy c:\zplcode.txt LPT1') 返回“0复制的文件”。如果我尝试复制任何普通文件或回显它们,也会发生这种情况。

这就像 apache 没有写权限之类的,仍然不像在 linux 上有自己的用户,它是作为系统运行的服务...你能帮忙吗?谢谢

edit2:我通过禁用 UAC 并强制以管理员身份运行 apache 服务解决了我的问题,然后执行 shell_exec("echo zplcode here >///localhost//printer") 其中打印机是我在共享打印机时分配给打印机的名称。我想问题仍然存在,因为如果需要我无法将数据推送到 LPT1(除非共享它并执行我在这里所做的)。

最佳答案

你说你“将 USB 打印机映射到 LPT1”;此类映射是用户登录 session 的本地映射(或者可能是远程桌面 session ,我不确定)。

无论哪种方式,服务都不会看到它,即使配置为在同一用户帐户下运行也是如此。每个服务都有一个单独的登录 session ,从 Windows Vista 开始,only services run in Remote Desktop session 0 .

关于Windows 中的 PHP shell_exec 不写入 LPT1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335284/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com