Using exec, system, and other functions in php to call system commands

Source: Internet
Author: User

Php built-in functions exec and system can call system commands (shell commands). Of course, there are also passthru, escapeshellcmd and other functions.

In many cases, using the exec, system, and other functions of php to call system commands can help us complete our work better and faster. For example, exec helped me a lot when I processed the. rar file in batch two days ago.

Today, I will sort out common calls to system functions and share my experience with you.

Note: to use these two functions, the security mode in php. ini must be disabled. Otherwise, php will not allow you to call system commands for security reasons.

Let's take a look at the php Manual's explanation of the two functions:

Exec --- execute external program

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

Note:

Exec () executes the command, but it does not output anything. It simply transmits the last line from the command result. If you need to execute a command, you can use the passthru () function to obtain all data from the command.

If the array parameter is given, the specified array will be filled with each line output by the command. Note: If the array already contains some elements, exec () it will be appended to the back of the array. If you do not want this function to append an element, you can call unset () before passing this array to exec ().

If the array and return_var parameters are given, the status command returned for execution will be written to this variable.

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

Note: If you use this function to start a program and want to leave it when running in the background (background), you must ensure that the output of this program is redirected) to a file or some output data streams, otherwise PHP will be suspended (hang) until the program execution ends.

System --- execute an external program and display the output

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

Note:

System () executes the command and outputs the result. If the return_var parameter is given, the status code for executing the command will be written to this variable.

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

Note: If you use this function to start a program and want to leave it when running in the background (background), you must ensure that the output of this program is redirected) to a file or some output data streams, otherwise PHP will be suspended (hang) until the program execution ends.

If PHP runs as a server module, after each line is output, system () will try to automatically clear the web server's output buffer.

If the command succeeds, the last line of the command is returned. If the command fails, false is returned.

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

Both are used to call the system shell command,

Differences:

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

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

Exec example:

 

 
 
  1. Reference content is as follows:
  2. <? Php
  3. $ A = exec ("dir", $ out, $ status );
  4. Print_r ($ );
  5. Print_r ($ out );
  6. Print_r ($ status );
  7. ?>

System example:

 

 
 
  1. Reference content is as follows:
  2. <? Php
  3. $ A = system ("dir", $ out );
  4. Print_r ($ );
  5. Print_r ($ out );
  6. ?>

You can run it to check the effect.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.