Home  >  Article  >  Backend Development  >  How to start Windows applications, execute bat batch processing, and execute cmd commands in PHP (detailed explanation of exec and system functions), detailed explanation of exec function_PHP tutorial

How to start Windows applications, execute bat batch processing, and execute cmd commands in PHP (detailed explanation of exec and system functions), detailed explanation of exec function_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:16:321299browse

How to start Windows applications, execute bat batch processing, and execute cmd commands in PHP (detailed explanation of exec and system functions), detailed explanation of exec function

Exec or system can call cmd commands

Go directly to the code:

Copy code The code is as follows:

/**Open the windows calculator*/
exec('start C:WindowsSystem32calc.exe');

/**After php generates the windows batch file, then execute the batch file*/
$filename = 't.bat';
$somecontent = 'C:
';
$somecontent .= 'cd "C:/Program Files/MySQL-Front"';
$somecontent .= '
start MySQL-Front.exe';
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file $filename";
exit;
}

/**First we need to make sure the file exists and is writable*/
if (is_writable($filename)) {

/**That is where $somecontent will be written when we use fwrite()
Write $somecontent to the file we opened.*/
if (fwrite($handle, $somecontent) === FALSE) {
echo "Cannot write to file $filename";
exit;
}
echo "Successfully written $somecontent to file $filename";
fclose($handle);
} else {
echo "File $filename is not writable";
}
exec($filename);
?>

There is a remaining problem, which is the exec() call. PHP will continue to execute until you close the started application. This will cause the PHP execution to time out. I don’t know how to solve this problem. I hope experts will pass by here and leave answers! I will solve it in the future and will update it here!

The following comes from information

================================================== ==

PHP’s built-in functions exec and system can call system commands (shell commands), and of course there are functions such as passthru and escapeshellcmd.

In many cases, using PHP's exec, system and other functions to call system commands can help us complete our work better and faster.

Note: If you want to use these two functions, the safe mode in php.ini must be turned off, otherwise php will not allow calling system commands for security reasons.

First take a look at the explanation of these two functions in the PHP manual:

exec --- Execute external program

Syntax: string exec ( string command [, array &output [, int &return_var]] )

Description:
exec() executes the given command command, but it does not output anything. It simply returns the last line from the result of the command. If you need to execute a command and get all the information from the command, you can use it. passthru() function.
If the argument array is given, the specified array will be filled with each line output by the command. Note: If the array already contains some elements, exec() will append it to the end of the array. If you don't want to To append elements to this function, you can call unset() before passing the array to exec().
If the parameters array and return_var are given, the status command returned by the execution will be written to this variable.

Note: If you allow data from user input to be passed to this function, then you should use escapeshellcmd() to ensure that the user cannot trick the system into executing arbitrary commands.

Note: If you use this function to start a program and want to leave it while executing in the background, you must make sure that the output of the program is redirected to a file or some output data. stream, otherwise PHP will hang until the program execution ends.

system --- Execute external programs and display output

Syntax: string system ( string command [, int &return_var] )

Description:

system() executes the given command command and outputs the result. If the parameter return_var is given, the status code of the executed command will be written to this variable.

Note: If you allow data from user input to be passed to this function, then you should use escapeshellcmd() to ensure that the user cannot trick the system into executing arbitrary commands.

Note: If you use this function to start a program and want to leave it while executing in the background, you must make sure that the output of the program is redirected to a file or some output data. stream, otherwise PHP will hang until the program execution ends.
If PHP is running as a server module, system() will try to automatically clear the web server's output buffer after each line of output.

Returns the last line of the command if successful, false if failed.

If you need to execute a command and get all the data from the command, you can use the passthru() function.

These two are used to call system shell commands,

Differences:

Exec can return all execution results to the $output function (array). $status is the execution status. 0 means success and 1 means failure

systerm does not need to provide the $output function. It returns the result directly. Similarly, $return_var is the execution status code. 0 is success and 1 is failure

exec example:

Copy code The code is as follows:

$a = exec("dir", $out, $status);
print_r($a);
print_r($out);
print_r($status);
?>

system example:
Copy code The code is as follows:

$a = system("dir", $status);
print_r($a);
print_r($status);
?>

The above instructions may seem a bit confusing, but you will understand after running two examples!

【system】

Copy code The code is as follows:

set_time_limit(0);
define('ROOT_PATH', dirname(__FILE__));

include 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);
?>

Output:

Copy code The code is as follows:

++++++++++++++++++++++++++++++++++++++++
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

[exec]

Copy code The code is as follows:

set_time_limit(0);
define('ROOT_PATH', dirname(__FILE__));

include 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);
?>

Output:

Copy code The code is as follows:

++++++++++++++++++++++++++++++++++++++++
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
$output
++++++++++++++++++++++++++++++++++++++++
2014-10-15 16:25:00
Array
(
[0] => root 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:11211 -b 192.1 68.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

Conclusion:

If you need detailed output results, use exec()! I usually use exec() to execute external commands!

Reference:

http://php.net/manual/zh/function.system.php
http://php.net/manual/zh/function.exec.php

How to execute cmd command in c++ without system function

Use Notepad to write down your command and save it as a batch file, (suffix .bat).
Use winexec function to run this batch process

How to execute cmd command or bat processing in php - Technical Q&A

The function uses these two exec();system(); If it doesn’t work, it may be that you wrote the command wrong. $str =null;exec(\"dir c:\",$str);Usage as above;

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/897017.htmlTechArticlePHP methods to start windows applications, execute bat batch processing, and execute cmd commands (detailed explanation of exec and system functions), Detailed explanation of exec function. Either exec or system can call cmd command directly...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn