問題タブ [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でスクリプトを閉じる/終了する方法が見つかりません。
誰かが私がそれをどのように行うことができるかについての考えを持っていますか?ありがとうございました。
マリックスの答えに合うように編集してください:
残念ながら、7zipstanaloneコンソールプロセスは引き続きバックグラウンドで実行されます。セッション変数の値は1(整数)であることが確認されています。
編集..:jqueryでセッション変数を変更するリクエストが最初のスクリプトが完了するまで待機していることに気づきました。だから、役に立たない:(
php - 実行中のプログラムとJavaScriptをやり取りする
問題:
サーバー側で実行されているプログラムとクライアント側で実行されているJavaScriptの間を行き来できるかどうかを確認しようとしています。プログラムからのすべての出力はJavaScriptに送信されてユーザーに表示され、ユーザーからのすべての入力はJavaScriptからプログラムに送信されます。
JavaScriptに出力を受信させ、入力を送信させることは、AJAXを使用して簡単に実行できます。問題は、サーバー上ですでに実行されているプログラムにアクセスする方法がわからないことです。
試み:
PHPを使おうとしましたが、乗り越えられないハードルにぶつかりました。これで、を使用して問題なくPHPでプログラムを実行できますproc_open
。stdin
とストリームにフックstdout
でき、プログラムから出力を取得して入力を送信することもできます。しかし、私はこれを一度しか行うことができません。
同じPHPスクリプトを再度実行すると(?)、プログラムを再度実行することになります。したがって、複数の実行から得られるのは、プログラムがstdout
最初に何回も書き込むものだけです。
現在、すでに実行中のプログラムのとストリームproc_open
にアクセスする方法がわからないため、入力と出力のみを処理することになっているスクリプトで使用しています。私の見方では、同じPHPスクリプトを複数回実行しても、実行中のプログラムの状態を維持する必要があります。およびストリームによって返され、フックされたリソースを維持します。stdout
stdin
proc_open
pipes
stdin
stdout
$_SESSION
動作しません。リソースを維持するためにそれを使用することはできません。
プログラムでそのようなことを行ったり来たりする方法はありますか?どんな助けでも本当にありがたいです。
php - PHPproc_open-プロセスに入力が必要な場合はベイルアウト
つまり、バックアップタスクを実行するために、などproc_open()
のプログラムを実行するために使用しています。ssh
rsync
scp
ただし、場合によっては、これらのプロセスがインタラクティブになり、入力が必要になることがあります。たとえば、SSHの公開鍵認証が失敗し、パスワードを要求する場合などです。バックアップジョブをハングさせることは問題外であり、さらに悪いことに、エラーを生成しないため、これは大きな問題です。
実行中のプロセスの双方向性を完全に取り除くにはどうすればよいですか?プロセスが突然入力を必要とする場合、私は救済してすぐにエラーを生成したいと思います。通常の操作ではバックアッププロセスに非常に長い時間がかかる可能性があるため、一般的なタイムアウトは解決策ではありません。この問題に対する一般的な解決策が本当に必要です。
ありがとう!
php - PHP proc_open 可用性
proc_open
データを処理するために外部アプリケーションを使用および依存する PHP ライブラリを作成しました。
ここで、サーバーを分析し、ライブラリをサーバーで使用できるかどうかを返す「チェック」ファイルを作成する必要があります。
これらの手順で十分だと思いました:
- proc_open が許可されているかどうかを確認します
- 外部アプリケーションがインストールされているかどうかを確認する
proc_open が許可されているかどうかを確認するにはどうすればよいですか? また、proc_open は Windows ベースのサーバーでも動作すると思います (端末の代わりに Windows コマンド プロンプトを使用するだけです)。
php - PHPはproc_openをユーザーに直接出力するように設定しました
私は pdftk で proc_open を使用していくつかのフォームにデータを事前入力していますが、これはかなりうまく機能しますが、結果をファイルに保存してからファイルを読み戻すのではなく、ファイルを直接印刷したいと思います。私はこれで動作しているので、問題はありません。しかし、php のメモリに値を保持する必要がないように、proc_open の出力をユーザーに返されるストリームに直接送りたいと思います。これまでのところ、次のものがあります。
上記のコードで得られるように、実際に値を変数に保存してから出力することなく、結果を直接使用できるようにしたいと思います。PHPの出力のストリームを直接出力に向ける方法はありますか? メモリを節約し、コードの実行にかかる時間を短縮するためにこれを行いたいと思います。
ストリームの結果を直接出力するphpのストリームの関数を知っている人はいますか。または、これを行う proc_open の設定があります。いずれにせよ、PDF を直接表示するには出力に content-length ヘッダーを追加する必要があるため、これがまったく機能しないのではないかと心配しています。ストリームを直接出力する機能を知っている人がいる場合、実際に読み込まずにストリームのバイト長を取得する方法もあります。
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のWebアプリでCapifonyを使用しようとしています。
これが私のdeploy.rbファイルです:
そして、ここに私のエラーがあります:
スクリプトの実行時php composer.phar update
詳細はこちら: http: //pastebin.com/hNJaMvwf
しかし、私は共有ホスティングに参加していて、ホスティング業者からproc_openを有効にできないと言われましたが、それを機能させる方法はありますか?
あなたの助けをどうもありがとう!