私はPHP使用してバッチファイルを実行しようとしていますこれらの作業のphpバッチファイルを実行できないのはなぜですか?
$script = "\\\MAFINFWWWPV02\D$\WebContent\\engsys.corp.ftr.com\BatchFiles\CopyFiles.bat";
exec($script,$ReturnArray,$ReturnValue);
//shell_exec($script);
//system('cmd /c $script');
//system($script,$ReturnValue);
なし!私が試してみて、何が起こっているか確認するために
var_dump($ReturnValue); echo "<br>";
var_dump($ReturnArray); echo "<br>";
を試してみたが、私はこのような通常の出力のように見えるものを手に入れる:
INT(1)
配列(0) {}
しかし、手動で実行するとうまくいく私のbatファイルでコピーしようとしているファイルはコピーされません!
編集、追加の質問
ファイルアドレスにエスケープする\
必要ですか?
EDIT 2
は、ここで私はicacls
を実行しているから何を得るのです。
CopyFiles.bat NT AUTHORITY \ IUSR:(I)(RX)
NT AUTHORITY\SYSTEM:(I)(F) NT AUTHORITY\NETWORK:(I)(RX) CORP\ibb601:(I)(F) CORP\taw330:(I)(F) CORP\mmm976:(I)(F) BUILTIN\Administrators:(I)(F) BUILTIN\Users:(I)(RX,W)
Iフルコントロールを持ち、ほかの誰もが少なくとも読み取り/実行できます。
EDIT 3
私はそれを絞られています。コマンドが機能していないということではなく、ファイルに対するアクセス許可が拒否されているということではありません。私は誰もがフォルダ全体への書き込みと読み取り/実行のアクセス権を持っているので、私は理解しません。
EDIT 4
私はそれが動作するように取得しようと上からのコマンドを実行しています。私は何のエラーが私の画面にあるかを印刷する機能(var_export(my_exec("shell_exec($script)"));
)を使用しています。私はこのようなものを得続けます:
'\' shell_exec \ 'は内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
私は別の各shell_exec
に1つ、system
、およびexec
を取得します。コマンドが認識されないと言っているだけです。これは、Windows Server 2012 R2 Standard 64ビットで実行されています。私が命令に間違っていることがありますか?私は、エラーを印刷するのに使用してい
機能(私は別のポストにそれを見つけた):
function my_exec($cmd, $input='')
{
$proc=proc_open($cmd, array(0=>array('pipe', 'r'), 1=>array('pipe', 'w'), 2=>array('pipe', 'w')), $pipes);
fwrite($pipes[0], $input);fclose($pipes[0]);
$stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);
$stderr=stream_get_contents($pipes[2]);fclose($pipes[2]);
$rtn=proc_close($proc);
return array('stdout'=>$stdout,'stderr'=>$stderr,'return'=>$rtn);
}
\おそらくWebサービスを実行するユーザーは、そのサーバー、場所やバットファイルへのアクセスおよび/またはdoesnのための権限を持っていませんコピーするファイルまたは宛先にアクセスする権限を持っていません。 – AbraCadaver
@AbraCadaver私は、ユーザーがファイルの場所と.batファイルの場所の両方への読み取り/書き込みアクセス権を持っていることを確認しました。 – Mike
@AbraCadaverどのユーザーが使用されているかを正確に確認する方法はありますか?または、特定のユーザーを強制的に使用することはできますか? – Mike