目次
PHPでWindowsアプリケーションの起動方法、batバッチ処理の実行方法、cmdコマンドの実行方法(exec関数とsystem関数の詳細説明)、exec関数の詳細説明
システム関数を使用せずにC++でcmdコマンドを実行する方法
PHPでcmdコマンドやbat処理を実行する方法 - テクニカルQ&A
ホームページ バックエンド開発 PHPチュートリアル PHPでWindowsアプリケーションの起動、バッチバッチ処理の実行、cmdコマンドの実行方法(exec関数とsystem関数の詳細説明)、exec関数の詳細説明_PHPチュートリアル

PHPでWindowsアプリケーションの起動、バッチバッチ処理の実行、cmdコマンドの実行方法(exec関数とsystem関数の詳細説明)、exec関数の詳細説明_PHPチュートリアル

Jul 13, 2016 am 10:16 AM
バッチバッチ処理 cmdコマンド exec php system windows アプリ

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 は実行ステータス コードです。

は成功を意味します。

実行例:


コードをコピーします コードは次のとおりです:
$a = exec("dir", $out, $status);
print_r($a);
print_r($out);
print_r($status);
?>

システム例:

コードをコピーします コードは次のとおりです:
$a = system("dir", $status);
print_r($a);
print_r($status);
?>

上記の手順は少しわかりにくいように思えるかもしれませんが、2 つの例を実行すると理解できるでしょう。

【システム】

コードをコピーします コードは次のとおりです:
set_time_limit(0);
定義('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');

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

システム関数を使用せずにC++でcmdコマンドを実行する方法

メモ帳を使用してコマンドを書き留め、バッチ ファイル (拡張子 .bat) として保存します。
winexec 関数を使用してこのバッチ プロセスを実行します

PHPでcmdコマンドやbat処理を実行する方法 - テクニカルQ&A

この関数は次の 2 つの exec();system(); を使用します。これが機能しない場合は、おそらくコマンドの書き方が間違っている可能性があります。 $str =null;exec(\"dir c:\",$str); 使い方は上記の通りです;

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/897017.html技術記事 Windows アプリケーションを起動し、bat バッチ処理を実行し、cmd コマンドを実行する PHP メソッド (exec 関数と system 関数の詳細な説明)、exec 関数または system のどちらでも cmd コマンドを直接呼び出すことができます...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

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

一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 Apr 06, 2025 am 12:03 AM

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

クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? Apr 07, 2025 am 12:02 AM

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

PSの負荷速度をスピードアップする方法は? PSの負荷速度をスピードアップする方法は? Apr 06, 2025 pm 06:27 PM

Slow Photoshopの起動の問題を解決するには、次のような多面的なアプローチが必要です。ハードウェアのアップグレード(メモリ、ソリッドステートドライブ、CPU)。時代遅れまたは互換性のないプラグインのアンインストール。システムのゴミと過剰な背景プログラムを定期的にクリーンアップします。無関係なプログラムを慎重に閉鎖する。起動中に多数のファイルを開くことを避けます。

[ブラウザ]タブを閉じることと、JavaScriptを使用してブラウザ全体を閉じることを区別する方法は? [ブラウザ]タブを閉じることと、JavaScriptを使用してブラウザ全体を閉じることを区別する方法は? Apr 04, 2025 pm 10:21 PM

ブラウザのJavaScriptを使用して、タブを閉じることとブラウザ全体を区別する方法は?ブラウザの毎日の使用中、ユーザーは...

どのようにしてクラスが拡張されたり、PHPでメソッドがオーバーライドされたりするのを防ぐことができますか? (最終キーワード) どのようにしてクラスが拡張されたり、PHPでメソッドがオーバーライドされたりするのを防ぐことができますか? (最終キーワード) Apr 08, 2025 am 12:03 AM

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

PHP関数引数と配列の開梱で...(SPLAT)演算子の目的と使用について説明してください。 PHP関数引数と配列の開梱で...(SPLAT)演算子の目的と使用について説明してください。 Apr 06, 2025 am 12:07 AM

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

See all articles