0

php exec() を介していくつかのコマンドを実行しようとしていますが、多くの問題が発生しています。#1、コマンドを実行する必要があるドライブ文字を変更できません。#2、複数のコマンドを実行できません。最初のコマンドだけが実行されます。

私がやろうとしていることの例

"cmd.exe /c \"cd E:\files; p4 -P -u user1 -c client1 sync ...\""

これは私を完全に狂わせています。私はすべてを試しましたが、ドライブ文字を変更できません。ドライブ文字を変更しなくても、最初のコマンドしか実行されません。どんな助けでも大歓迎です。

4

2 に答える 2

1

p4これを行う必要があるのは、アプリケーションが存在するディレクトリの作業ディレクトリでアプリケーションを起動する必要があるためだと思います。この場合、これを行う方法は、PHP スクリプトの作業ディレクトリを変更することです ( chdir())呼び出す前にexec():

// Get current working directory so we can set it back afterwards
$oldDir = getcwd();

// Change to required dir
chdir('E:\\files');
// Execute external program
exec('p4 -P -u user1 -c client1 sync ..');

// Change back to original working directory
chdir($oldDir);

外部プログラムの作業ディレクトリが問題にならない場合は、次のようにするだけです。

exec('E:\\files\\p4 -P -u user1 -c client1 sync ...');

.exe動作させるには、実行するファイルの名前にファイル拡張子 (例: ) を追加する必要がある場合もあります。

于 2012-08-23T13:32:17.290 に答える
0

私が見ることができる 1 つの問題はE:\files、バックスラッシュをエスケープする必要があることです。

Windows では、最初にドライブ文字を変更してから、ディレクトリを変更することに気付きました。したがって、ドライブを変更する必要がある場合は、次を試してください。

"cmd.exe /c \"E:; cd E:\\files; p4 -P -u user1 -c client1 sync ...\""
于 2012-08-23T13:23:57.463 に答える