私はphpファイルを介してシステムコマンドを使用していました..cd \は機能していましたが、数回試行した後、突然停止しました:| 私が何をしようと
<?php
$command = array("cd \","dir");
$result = system($command[0], $return);
?>
Windows はスラッシュとバックスラッシュ/
をサポートしている\
ため、スラッシュのみを使用することで相互互換性が確保され、長期的には問題が軽減されます。
<?php
$command = array("cd /","dir");
$result = system($command[0], $return);
?>
エラーがある場合は、問題がディレクトリのスラッシュではない可能性があるため、投稿してください。以前は機能していたとのことです。
私は問題を理解したと思います。PHPのsystem()コマンドは、cmd.exeのインスタンスを作成せず、代わりにコマンドを実行して終了するだけです。そのため、CDコマンドを使用してディレクトリを変更すると、system()によって作成されたインスタンスのディレクトリが変更されてから終了します。私の理論が正しいことを願っていますxD
試す
$command = array("cd \\","dir");
Linux mod で:
$command = array("cd \\","dir");
ウィンドウズモッドで:
$command = array("cd /","dir");
\
私のテスト (Win 7 および XP) では、ディレクトリをエスケープする (つまり、\\
代わりに使用する)必要があることがわかりました。または、スラッシュを使用できます。また、システムコールの代わりにPHP のchdir
関数を使用してみませんか?
<?php
echo getcwd() . "\n";
chdir("\\");
echo getcwd() . "\n";
?>
コメント「...ブラウザでコマンドを作成しようとしています...」に応じて編集します。システム関数は、指定したコマンドを実行して返すだけです。システム コマンドを呼び出したプロセスには (直接) 影響しません。したがって、ディレクトリを変更するコマンドを含むシステム コールは、実行中の PHP プログラムの作業ディレクトリに影響を与えません。
PHP には独自のディレクトリ変更コマンドがあります: http://us3.php.net/manual/en/function.chdir.php。ただし、それはまさにあなたが望むことをしないかもしれません。