问题标签 [proc-open]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1939 浏览

php - php - proc_open(或其他有效的函数)

我需要通过浏览器执行一些命令行。我需要在命令行中做的是:

那么,我该如何使用该proc_open功能来做到这一点?或者我应该使用另一个功能来做到这一点?


亚当赖特,我试过你的例子,但我无法更改用户密码。我是否需要在脚本中做任何其他事情(除了定义 $user、$userPassword 和 $newPassword)?

谢谢

0 投票
1 回答
669 浏览

php - 从 proc_open 捕获控制台输出

我正在使用 proc_open 启动连接到服务器程序的 telnet 会话。连接正常,但是当我收到回复时,我无法将整个字符串存储在文件中,因为它在一些字符后被剪切。

这是我的片段:

我也尝试过使用 netcat 和 exec:

但我有同样的结果。

如果我从控制台运行 telnet/netcat 命令,我会在 stdout 上获得整个字符串,但如果我尝试将其重定向到另一个文件,我会得到与上面相同的概率。

0 投票
1 回答
2026 浏览

php - PHP popen 和 proc_open 不返回二进制输出

使用 popen 或 proc_open 运行以下命令以列出 windows 共享的内容时:

如果共享中的文件在遇到特殊字符时具有 § 字符(ASCII 21 十进制),则会跳过数据直到下一行。

预期输出:

实际输出:

0 投票
3 回答
3449 浏览

php - PHP 使用 proc_open 以便它不等待它打开(运行)的脚本完成?

我已经花了一段时间,但无法让它发挥作用,我很抱歉,因为我早些时候问了一个与此相关的问题但删除了它,所以我可以做更多的研究来缩小问题,在这一点上我被卡住了因为我认为我有这个解决方案,但它没有像我预期的那样工作.. 我找到了一个论坛,有人问了一个类似的问题,他们给出了如下代码,我正在尝试.. 它确实运行脚本,但它仍然等待它完成,然后再转到 PHP 代码中的下一行

0 投票
5 回答
2184 浏览

php - 如何使用 PHP 生成并发进程?

我正在尝试使用 proc_open 在 PHP 中一次生成多个进程,但是在第一个进程结束之前,第二个调用不会开始。这是我正在使用的代码:

0 投票
1 回答
947 浏览

php - 确保 proc_open 将使命令行窗口在 PHP 中保持活动状态

在 PHP 中,我使用 proc_open 在命令行运行命令。

它需要在新的 CMD 窗口中打开,所以我在命令的开头添加了“开始”。

但是,它也需要保持打开状态才能显示结果,但实际上它会在之后自动关闭窗口。

我尝试添加“暂停”以及“保留”的 /k 选项。但两者都不起作用。窗户刚关上。

使用 proc_open 时如何使窗口保持打开状态?

这是代码的一部分,之前填充了 $cmd:

0 投票
6 回答
7558 浏览

php - 如何使用 PHP 设置交互式 SSH 会话?

我正在尝试通过 Mac OS X 10.6 上的命令行使用 PHP 建立与远程服务器的交互式 SSH 连接。我目前正在使用 PHP 的 proc_open 函数来执行以下命令:

这几乎可以工作。这些-t -t选项应该强制一个他们几乎做的伪终端。我可以输入 SSH 密码并按回车键。但是,按下回车后,终端似乎只是挂起。没有输出,什么都没有——就好像 SSH 会话失败了。我无法运行命令或任何东西,必须使用 Ctrl+C 杀死整个事情。我知道登录成功,因为我可以执行类似的命令ssh -t -t -p 22 user@server.com "ls -la"并获得正确的输出。

我认为问题一定与我在 proc_open 调用中使用标准管道这一事实有关,因此我将它们替换为 pty。我收到以下错误:“此系统不支持 pty 伪终端...”

Mac OS X 是否根本不支持 pty 或伪终端?(我对使用所有这些 shell 术语很陌生)。

这是PHP代码:

(对不起 - 我一辈子都无法弄清楚 SO 的格式说明......)

我究竟做错了什么?为什么我不能使用 pty?这在 Mac OS X 上是不可能的吗?谢谢你的帮助!

0 投票
1 回答
605 浏览

php - proc_open 在 php 中

proc_ope在 PHP 中使用 n 打开应用程序,例如tclsh.exe。这将返回一个资源编号。

现在我的问题是我怎么知道tclsh进程是否在脚本中被杀死?

问候米通

0 投票
4 回答
1758 浏览

php - 从 PHP 脚本运行 perl 文件,但不等待 Windows Server 上的输出

我试图从 php 脚本中执行 perl 脚本。我已经使用各种方法(例如 exec、popen 和 proc_open)进行了这项工作,但是我有几个问题需要解决,而老 Google 并没有给我答案。

我需要从 php 文件中运行 .pl 脚本(将一个变量传递给脚本,该脚本是一个数字),但停止 php 脚本等待 .pl 完成(.pl 可能需要 4-5 小时在服务器上运行)。我不期望 perl 脚本有任何返回输出(perl 脚本将其输出记录到 mysql db)所以我只需要它在服务器上运行并让 php 脚本继续运行。

当它在运行 apache、php、mysql 的 Windows 机器上运行时,有一些障碍需要克服。

我想我已经看到了 linux 的解决方案,但它需要留在 Windows 机器上。

我目前正在尝试使用以下代码的 proc_open 方法(proc_open 行上的 35 是我需要传递给 perl 脚本的测试 ID):

现在这段代码确实执行了 perl 脚本,但是我放置在它之后的 while 循环(仅用于测试)永远不会执行(我没有等待 perl 脚本完成以查看它是否执行),因为它必须等待 .pl 完成.

0 投票
3 回答
1512 浏览

php - PHP proc_open 多次打开

我有一个实用程序函数,用于通过 CLI(cmd、bash 等)执行程序。它返回一个包含 3 个项目的数组STDOUTSTDERREXIT CODE

到目前为止,它运行良好,没有任何问题。事实上,我遇到的问题并没有真正阻碍它的功能,但我担心性能。

问题是在某些情况下,PHP 多次运行相同的命令(在我的情况下为 3 次),即使它应该只执行一次。

注意注释行(第 9 行)。那是为了测试。我启用它以确保目标程序只运行一次(我在想我的代码可能会以某种方式调用相同的函数)。但即使启用了该行,该程序仍会运行多次。

事实上,我的代码中有两个地方正在执行相同的程序(在不同的场合)。它们的命令行是相同的。

但是,有一次,程序运行一次,而在这种情况下,PHP 运行了 3 次。

我一直在 Process Explorer 下监视并查看此行为。我正在使用 Windows 7 x64。该程序是 32 位的,PHP 也是如此。

编辑:有问题的程序是定制开发的,它不会打开新流程。