


PHPでWindowsアプリケーションの起動、バッチバッチ処理の実行、cmdコマンドの実行方法(exec関数とsystem関数の詳細説明)、exec関数の詳細説明_PHPチュートリアル
PHPでWindowsアプリケーションの起動方法、batバッチ処理の実行方法、cmdコマンドの実行方法(exec関数とsystem関数の詳細説明)、exec関数の詳細説明
exec またはシステムは cmd コマンドを呼び出すことができます
コードに直接移動します:
/**Windowsの電卓を開く*/
exec('C:WindowsSystem32calc.exe を開始');
/**phpがWindowsバッチファイルを生成した後、バッチファイルを実行します*/
$filename = 't.bat';
$somecontent = 'C:
';
$somecontent .= 'cd "C:/Program Files/MySQL-Front"';
$somecontent .= '
MySQL-Front.exe を開始します';
if (!$handle = fopen($filename, 'w')) {
echo "ファイル $filename を開けません";
終了します;
}
/**まず、ファイルが存在し、書き込み可能であることを確認する必要があります*/
if (is_writable($filename)) {
/**fwrite() を使用するときに $somecontent が書き込まれる場所です
開いたファイルに $somecontent を書き込みます。*/
if (fwrite($handle, $somecontent) === FALSE) {
echo "ファイル $filename に書き込めません";
終了します;
}
echo "$somecontent をファイル $filename に正常に書き込みました";
fclose($handle);
} その他 {
echo "ファイル $filename は書き込み可能ではありません";
}
exec($ファイル名);
?>
起動したアプリケーションを閉じるまで PHP 呼び出しが実行され続けるという問題が残っています。これにより、この問題を解決する方法がわかりません。専門家がここを通りかかり、答えを残します。将来的には解決し、ここで更新します!
以下情報より引用
================================================ ===
PHPの組み込み関数execやsystemはシステムコマンド(シェルコマンド)を呼び出すことができ、もちろんpassthruやescapeshellcmdなどの関数もあります。
多くの場合、PHP の exec、system、およびその他の関数を使用してシステム コマンドを呼び出すと、作業をより適切かつ迅速に完了するのに役立ちます。
注: これら 2 つの関数を使用したい場合は、php.ini のセーフ モードをオフにする必要があります。オフにしないと、セキュリティ上の理由から、php はシステム コマンドを呼び出すことを許可しません。
まず、PHP マニュアルでこれら 2 つの関数の説明を見てください:
exec --- 外部プログラムを実行します
構文: string exec ( string command [, array &output [, int &return_var]] )
説明:
exec() は指定されたコマンドを実行しますが、何も出力しません。コマンドを実行してコマンドからすべての情報を取得する必要がある場合に使用できます。 passthru() 関数。
引数配列が指定されている場合、指定された配列にはコマンドによって出力された各行が埋め込まれます。 注: 配列に既に要素が含まれている場合、必要に応じて exec() はその要素を配列の末尾に追加します。この関数に要素を追加するには、配列を exec() に渡す前に unset() を呼び出します。
パラメータ array と return_var が指定されている場合、実行によって返されるステータス コマンドがこの変数に書き込まれます。
注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、ユーザーがシステムをだまして任意のコマンドを実行できないようにするために、escapeshellcmd() を使用する必要があります。
注: この関数を使用してプログラムを開始し、バックグラウンドで実行中にそのプログラムを残しておきたい場合は、プログラムの出力がファイルまたは出力データ ストリームにリダイレクトされていることを確認する必要があります。そうしないと、PHP がハングアップします。プログラムの実行が終了します。
システム --- 外部プログラムを実行し、出力を表示します
構文: string system ( string command [, int &return_var] )
説明:
system() は、指定されたコマンド command を実行し、結果を出力します。パラメータ return_var が指定されている場合、実行されたコマンドのステータス コードがこの変数に書き込まれます。
注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、ユーザーがシステムをだまして任意のコマンドを実行できないようにするために、escapeshellcmd() を使用する必要があります。
注: この関数を使用してプログラムを開始し、バックグラウンドで実行中にそのプログラムを残しておきたい場合は、プログラムの出力がファイルまたは出力データ ストリームにリダイレクトされていることを確認する必要があります。そうしないと、PHP がハングアップします。プログラムの実行が終了します。
PHP がサーバー モジュールとして実行されている場合、system() は出力の各行の後に Web サーバーの出力バッファを自動的にクリアしようとします。
成功した場合はコマンドの最後の行を返し、失敗した場合は false を返します。
コマンドを実行し、コマンドからすべてのデータを取得する必要がある場合は、 passthru() 関数を使用できます。
これら 2 つはシステム シェル コマンドを呼び出すために使用されます
違い:
Exec はすべての実行結果を $output 関数 (配列) に返すことができます。$status は実行ステータスを意味します。0 は成功を意味し、1 は失敗を意味します。
systerm は $output 関数を提供する必要はありません。同様に、$return_var は実行ステータス コードです。は成功を意味します。
実行例:
print_r($a);
print_r($out);
print_r($status);
?>
print_r($a);
print_r($status);
?>
【システム】
定義('ROOT_PATH', ディレクトリ名(__FILE__));
ROOT_PATH を含めます。 '/include/global.func.php';
$cmdTest = 'ps -ef grep magent';
$lastLine = system($cmdTest, $retVal);
write_log('$lastLine');
write_log($lastLine);
write_log($retVal);
?>
出力:
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:28:52
$lastLine
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:28:52
root 5375 5373 0 16:28 pts/1 00:00:00 grep magent
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:28:52
$retVal
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:28:52
0
【幹部】
set_time_limit(0);
定義('ROOT_PATH', ディレクトリ名(__FILE__));
ROOT_PATH を含めます。 '/include/global.func.php';
$cmdTest = 'ps -ef grep magent';
$lastLine = exec($cmdTest, $output, $retVal);
write_log('$lastLine');
write_log($lastLine);
write_log('$output');
write_log($output);
write_log('$retVal');
write_log($retVal);
?>
出力:
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:25:00
$lastLine
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:25:00
root 5360 5358 0 16:25 pts/1 00:00:00 grep magent
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:25:00
$出力
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:25:00
配列
(
[0] => ルート 2838 1 0 15:39 ? 00:00:00 magent -u root -n 51200 -l 192.168.137.100 -p 12001 -s 192.168.137.100:11212
[1] => root 5358 5356 0 16:25 pts/1 00:00:00 sh -c ps -ef grep magent
[2] => root 5360 5358 0 16:25 pts/1 00:00:00 grep magent
)
++++++++++++++++++++++++++++++++++++++++
2014-10-15 16:25:00
$retVal
++++++++++++++++++++++++++++++++++++++
2014-10-15 16:25:00
0
結論:
詳細な出力結果が必要な場合は、exec()を使用してください!私は通常、外部コマンドを実行するために exec() を使用します。
参考:
http://php.net/manual/zh/function.system.php
http://php.net/manual/zh/function.exec.php
メモ帳を使用してコマンドを書き留め、バッチ ファイル (拡張子 .bat) として保存します。
winexec 関数を使用してこのバッチ プロセスを実行します
この関数は次の 2 つの exec();system(); を使用します。これが機能しない場合は、おそらくコマンドの書き方が間違っている可能性があります。 $str =null;exec(\"dir c:\",$str); 使い方は上記の通りです;

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

PHPでは、予測不可能なトークンを使用して、CSRF攻撃を効果的に防ぐことができます。特定の方法には次のものが含まれます。1。フォームのCSRFトークンを生成および埋め込みます。 2.リクエストを処理するときにトークンの有効性を確認します。

フロントエンド開発でWindowsのような実装方法...

Slow Photoshopの起動の問題を解決するには、次のような多面的なアプローチが必要です。ハードウェアのアップグレード(メモリ、ソリッドステートドライブ、CPU)。時代遅れまたは互換性のないプラグインのアンインストール。システムのゴミと過剰な背景プログラムを定期的にクリーンアップします。無関係なプログラムを慎重に閉鎖する。起動中に多数のファイルを開くことを避けます。
![[ブラウザ]タブを閉じることと、JavaScriptを使用してブラウザ全体を閉じることを区別する方法は?](https://img.php.cn/upload/article/001/246/273/174338713695338.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
ブラウザのJavaScriptを使用して、タブを閉じることとブラウザ全体を区別する方法は?ブラウザの毎日の使用中、ユーザーは...

PHPでは、最終的なキーワードを使用して、クラスが継承されないようにし、メソッドが上書きされます。 1)クラスを決勝としてマークする場合、クラスを継承することはできません。 2)メソッドを最終的にマークする場合、メソッドはサブクラスによって書き換えられません。最終的なキーワードを使用すると、コードの安定性とセキュリティが保証されます。

PHPの...(SPLAT)演算子は、機能パラメーターと配列を開梱するために使用され、コードのシンプルさと効率を向上させます。 1)関数パラメーター解放:アレイ要素をパラメーターとして関数に渡します。 2)配列の開梱:アレイを別の配列または関数パラメーターに解除します。
