< Day Day Up > |
13.11 Running Shell CommandsWhile you can do almost anything in PHP, you can't do everything. If you need to run an external program from inside a PHP script, you have a few options. These are described in the "Program Execution" section of the PHP Manual (http://www.php.net/exec). Example 13-14 demonstrates the shell_exec( ) command, which runs a program and returns its output. In Example 13-14, shell_exec( ) runs the df command, which (on Unix) produces information about disk usage. Example 13-14. Running a program with shell_exec( )// Run "df" and divide up its output into individual lines $df_output = shell_exec('/bin/df -h'); $df_lines = explode("\n", $df_output); // Loop through each line. Skip the first line, which // is just a header for ($i = 1, $lines = count($df_lines); $i < $lines; $i++) { if (trim($df_lines[$i])) { // Divide up the line into fields $fields = preg_split('/\s+/', $df_lines[$i]); // Print info about each filesystem print "Filesystem $fields[5] is $fields[4] full.\n"; } } Example 13-14 prints something like this: Filesystem / is 63% full. Filesystem /boot is 7% full. Filesystem /opt is 93% full. Filesystem /dev/shm is 0% full. Just like when using external input in a SQL query or filename, you need to be careful when using external input as part of an external command line. Make your programs more secure by using escapeshellargs( ) to escape shell metacharacters in command-line arguments. Read more about running external commands in Section 12.7 of Programming PHP (O'Reilly) and in PHP Cookbook (O'Reilly), Recipes 18.20, 18.21, 18.22 and 18.23. |
< Day Day Up > |