问题标签 [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.
php - 使用未定义的常量 STDOUT - 假定为“STDOUT”
我正在运行以下proc_open
功能。加载页面时,我收到错误消息:
我应该如何设置STDOUT
和STSDERR
正确?
PHP 代码段
更新
当我在命令行(CentOS)中chmod 755 test.php
运行./test.php
时,我得到错误输出:
这令人费解,=
是不是命令?
更新 2
我得到输出:
php - x 秒后终止 proc_open
我正在使用 pdftk 合并 pdf 文件。有时,用户上传格式不正确的 pdf,它会挂起进程,不返回任何错误并消耗所有服务器资源。为了防止这种情况发生,我正在考虑实现进程调用,proc_open
并希望为进程设置运行时间限制,如果超过时间限制则终止进程。
下面是我用来合并 pdf 文件的函数示例,如果我设置
stream_set_blocking($process, 0);
它返回一个错误:
stream_set_blocking(): supplied resource is not a valid stream resource
我认为此函数中的某些内容格式不正确,希望有人能够为我指出正确的方向...该函数目前没有返回任何错误,但不会根据需要在 30 秒后终止
php - php的Svn远程服务器证书验证问题
为了使用 websvn 浏览远程存储库,我在本地主机(windows7,wampserver)中安装了 websvn。Websvn 通过 php 函数的 proc_open 执行 svn 命令。当 svn 命令是:
svn info "http://site.com/svnurl" --xml --non-interactive --username "guest" --password "guest"
proc_open 返回正确的结果。但是当 svn 命令是:
svn info "https://site.com/svnurl" --non-interactive --trust-server-cert --username "guest" --password "guest"
proc-open 返回错误。
svn:E175002:无法连接到 URL 'https://site.com/svnurl' 上的存储库 svn:E175002:'https://site.com/svnurl'的选项:服务器证书验证失败:为不同的主机名,发行者不受信任(https://site.com/svnurl)。
这里,site.com/svnurl 是虚幻的 url,真实的 url 是 205.174.169.180:9880/GBoomTest.ca。
你怎么能解决这个问题?
php - 如何使用 PHP 打开和关闭进程?
如何使用 PHP 打开和关闭进程?
现在我使用以下代码打开一个进程:
我正在寻找一种解决方案来关闭进程,以防用户想要中止。即使我停止了 php 脚本,该进程仍然在后台运行(这很正常),但我找不到在 Windows 下关闭/终止它的方法。
有谁知道我该怎么做?谢谢你。
编辑以适应 mallix 的答案:
不幸的是,7zip 独立控制台进程仍然在后台运行。会话变量的值是 1(整数)确认。
编辑 ..:我刚刚注意到使用 jquery 更改会话变量的请求正在等待......直到第一个脚本完成。所以,没用的:(
php - JavaScript 与正在运行的程序来回切换
问题:
我正在尝试查看是否可以在服务器端运行的程序和客户端运行的 JavaScript 之间来回切换。程序的所有输出都发送到 JavaScript 以显示给用户,用户的所有输入都从 JavaScript 发送到程序。
让 JavaScript 接收输出并发送输入很容易使用 AJAX 完成。问题是我不知道如何访问服务器上已经运行的程序。
尝试:
我尝试使用 PHP,但遇到了一些我无法跨越的障碍。现在,我可以使用 PHP 执行程序而没有任何问题proc_open
。我可以挂钩stdin
和stdout
流,我可以从程序中获取输出并将其发送输入。但我只能这样做一次。
如果再次执行相同的 PHP 脚本(?),我最终会再次运行该程序。因此,我从多次执行中得到的只是程序stdout
首先多次写入的内容。
现在,我proc_open
在应该只处理输入和输出的脚本中使用,因为我不知道如何访问已经运行的程序的stdout
和stdin
流。在我看来,我需要在同一 PHP 脚本的多次执行中保持程序的执行状态;维护返回的资源proc_open
并pipes
连接到stdin
和stdout
流中。
$_SESSION
不工作。我不能用它来维护资源。
有没有办法让程序有这样的来回?非常感谢任何帮助。
php - PHP proc_open - 如果进程需要输入,则退出
所以 - 我proc_open()
用来执行诸如 , 等程序ssh
来rsync
执行scp
备份任务。
但是,在某些情况下,这些过程可能会变得交互并需要输入,例如当 SSH 的公钥认证失败时,它会要求输入密码。这是一个主要问题,因为让备份作业挂起是不可能的,更糟糕的是,不会产生错误。
如何完全摆脱正在运行的进程中的交互性?如果该过程突然需要输入,我想立即退出并生成错误。通用超时不是解决方案,因为备份过程在正常操作中可能需要很长时间。我真的需要一个通用的解决方案来解决这个问题。
谢谢!
php - PHP proc_open 可用性
我制作了一个 PHP 库,它使用proc_open
并依赖外部应用程序来处理数据。
现在,我需要创建一个“检查”文件,该文件将分析服务器并返回是否可以在其上使用我的库。
我认为这些步骤就足够了:
- 检查是否允许 proc_open
- 检查是否安装了外部应用程序
如何检查是否允许 proc_open?另外,我猜 proc_open 也适用于基于 Windows 的服务器(仅使用 Windows 命令提示符而不是终端)?
php - PHP 设置 proc_open 直接输出给用户
我正在使用 proc_open 和 pdftk 来预填充一些表格的数据,这很好用,但不是将结果保存到文件然后读回文件,我想直接打印文件。我有这个工作,所以我没有任何问题。但是我想将 proc_open 的输出直接指向返回给用户的流,这样我就不必在 php.ini 中保存内存中的值。到目前为止,我有以下内容:
我想将结果直接用于使用上面的代码,而不是将值实际保存在变量中然后打印出来。有没有办法将php输出中的流直接指向输出。我想这样做是为了节省内存并减少代码运行所需的时间。
有谁知道 php 中的流函数可以直接打印流结果。或者是否有 proc_open 的设置可以做到这一点。无论哪种方式,我担心这可能根本不起作用,因为我可能需要在输出中添加一个内容长度标题以直接显示 PDF。如果有人知道直接打印流的功能,是否还有一种方法可以在不实际读取流的情况下获取流的字节长度。
php - PHP proc_open 管道异常(Win7/Apache2.2)
以下代码在运行“php test.php”(PHP 5)的 Windows 7 中从命令提示符执行时有效 - 输出只是“test”。但是,当 php (v5) 在 localhost apache 服务器 (v2.2) 上运行的任何浏览器上运行时,它不起作用 - 即没有输出(使用直接回显、刷新和使用 AJAX 方法)。该过程已成功启动(使用 proc_get_status 验证)(对我来说意味着权限问题也可以)。似乎与管道有关。有任何想法吗?我错过了一件众所周知的事情吗?
php - Proc_open 和 Capifony 问题
我正在尝试在 Symfony2.1 中将 Capifony 与我的 Web 应用程序一起使用以加速部署过程。
这是我的 deploy.rb 文件:
这是我的错误:
当脚本运行时php composer.phar update
更多细节在这里: http: //pastebin.com/hNJaMvwf
但是我在一个共享主机中,我的主机告诉我我不能启用 proc_open,有没有办法让它工作?
非常感谢你的帮助 !