2

この質問が以前に回答されている場合は、事前にお詫び申し上げます。これとまったく同じものを見つけるのはちょっと難しいです。タイトルがすでに述べているように、Windows では cmd ファイルを実行し、Linux ではシェル スクリプトを実行する Symfony2 プロセスを生成しようとしています。

Linux では、すべて正常に動作します。ただし、Windows では、プロセスに環境変数を渡そうとするとクラッシュします。

http://symfony.com/doc/current/components/process.html

コードはおおよそ次のようになります。

$process = new Process('Z:\bin\webpack.cmd', 'Z:\var\www\webpacktest\www\app\cache\dev');
$process->setEnv([
    'PATH'      => getenv('path')
    'NODE_PATH' => 'Z:\\bin\\node_modules'
]);

$process->run();

プロセスは終了コード (-1073741819) で終了し、何も出力しません。

メソッドを削除してsetEnv環境変数を渡さないと、プロセスは完全に実行されます。

編集: Windows 10 Home を実行しています。PHP 5.6 の実行

4

1 に答える 1

2

putenv を使用した回避策として、まったく同じ問題がありました。

putenv("NODE_PATH=Z:\\bin\\node_modules");
$process = new Process('Z:\bin\webpack.cmd', 'Z:\var\www\webpacktest\www\app\cache\dev');
$process->run();
putenv("NODE_PATH=");

あなたの例ではPATH、変更せず、とにかく継承されるため、渡す必要はありません。

于 2016-04-18T14:23:10.507 に答える