Поиск по сайту:
Как сказал бы уилл роджерс: "В природе нет такой вещи, как свободная переменная". (Алан.Дж.Перлис)

Выполнить команду оболочки в PHP с помощью exec()

18.12.2020
Полный список функций файловой системы PHP 5

Скрипт PHP в основном используется для разработки веб-приложений, но его можно использовать и для других целей. PHP имеет несколько встроенных функций для выполнения системных команд. exec() — один из них. Он используется для выполнения команд оболочки или любой программы из сценария PHP. В этом руководстве показано, как эту функцию можно использовать в PHP.

 

Синтаксис:

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

 

Эта функция может принимать три аргумента. Первый аргумент является обязательным, который примет системную команду. Два других аргумента необязательны. Второй аргумент используется для хранения вывода команды в массиве. Третий аргумент этой функции используется для хранения статуса возврата выполненной команды. Эта функция возвращает последнюю строку из вывода выполненной команды.

 

Пример-1: Использование функции exec () без дополнительных аргументов

Основное использование функции exec() показано в этом руководстве. Создайте файл PHP со следующим сценарием, чтобы знать, как функция exec() возвращает выходные данные команды. Команда ‘ pwd ‘ использовалась в первой команде exec() скрипта, которая возвращает одну строку вывода. Команда ‘ ls -la ‘ использовалась во второй команде exec(), которая может возвращать несколько строк вывода. Если какая-либо команда возвращает несколько строк, тогда в качестве вывода будет отображаться последняя строка.

<? php

// Сохраняем вывод выполненной команды

$output1 =  exec('pwd');

// Распечатать возвращаемое значение

echo $output1; echo "<br/>";

// Сохраняем последнюю строку выполненной команды

$output2 = exec('ls -la');

// Распечатать возвращаемое значение 

echo $ output2; 

?>

 

Читать  Исправление предупреждения PHP: mysqli_real_connect(): (HY000/2002): with WP CLI and MAMP

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Команда ‘ pwd ‘ возвращает текущий рабочий каталог в виде вывода, который показан в первом выводе. Команда ‘ ls -la ‘ возвращает подробную информацию о списке каталогов, а второй вывод показывает последнюю строку из вывода команды.

 

Пример-2: Распечатать все значения выполненной команды

В предыдущем примере в функции exec() не использовался необязательный аргумент. В следующем примере показано использование необязательных аргументов функции exec(). Создайте файл PHP со следующим скриптом. В этом скрипте используются два необязательных аргумента exec(). Команда ‘ ls -l ‘ используется в первом аргументе, который возвращает список каталогов. Переменная $ output используется здесь для хранения вывода команды в массиве. Переменная $status используется для хранения возвращаемого значения статуса выполненной команды. Выходные данные команды будут напечатаны как массив, и каждое значение выходного массива будет напечатано с использованием цикла for.

<? php

// Сохраняем вывод выполненной команды в массиве

exec ( 'ls -l' , $ output , $ status ) ;


// Вывести все возвращаемые значения выполненной команды в виде массива

print_r ( $ output ) ;

echo "<br/>" ;


// Распечатать вывод выполненной команды в каждой строке

foreach ( $ output as $ value )
{
echo $ value . «<br />» ;
}

// Распечатываем статус возврата выполненной команды

echo $ status ;
?>

 

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Вывод показывает массив, содержащий вывод команды, ls -l и каждое значение массива в каждой строке.

 

Пример-3: Распечатать все файлы PHP в текущем каталоге

В следующем примере показан список всех файлов PHP в текущем каталоге с помощью функции exec(). Здесь команда ‘ ls -l * .php ‘ используется здесь, чтобы узнать список всех файлов PHP в текущем каталоге. Тег <pre> используется в скрипте для печати содержимого массива в структурированном формате.

<? php

// Сохраняем вывод выполненной команды в массиве

exec ( 'ls -l * .php' , $ output ) ;

// Распечатать вывод выполненной команды

echo "<pre>" ;

print_r ( $ output ) ;

echo "</pre>" ;

?>

 

Читать  Что нового в PHP 8 (функции, улучшения и JIT-компилятор). Часть 3

Пример-4: Запуск сценария bash

Как любой сценарий bash может быть выполнен с помощью функции exec (), показано в этом примере. Создайте файл bash с именем loop.sh со следующим скриптом, который будет печатать все четные числа от 1 до 20.

loop.sh

#! / bin / bash

# Инициализировать счетчик
 
counter=1
 
# Повторять цикл до тех пор, пока значение $ counter не станет меньше или равно 20,
 
while [ $counter -le 20 ] do
 
# Распечатать четные числа
 
if [[ $counter%2 -eq 0 ]] then
 
# Печатать $counter без перевода строки
 
echo  "$counter" fi

# Увеличить $counter на 1 

((counter++)) 

done

 

Создайте файл PHP со следующим сценарием для запуска сценария bash. ‘bash loop.sh’ используется в качестве первого аргумента функции exec(), которая будет выполнять файл сценария loop.sh. Цикл ‘foreach‘ используются для печати каждого значения $output с пространством.

<? php

// Запускаем скрипт bash

exec('bash loop.sh', $output);

echo "Все четные числа от 1 до 20: <br />" ;

// Выводим наш вывод с помощью цикла

foreach($output as $value)

{

echo $value."  ";

}

?>

Вывод :

Следующий вывод появится после запуска вышеуказанного скрипта с сервера. Вывод показывает все четные числа от 1 до 20.

 

Пример 5: Запуск команды `dir` с помощью функции exec()

Команда dir работает так же, как и команда ls. В следующем примере показано, как можно выполнить команду dir с помощью сценария PHP. Создайте файл PHP с помощью следующего сценария, который сохраняет вывод команды ‘dir’ в массиве с именем $output и значение состояния в переменной с именем $return. Здесь функция var_dump() используется для печати структуры массива $ output с информацией о типе данных.

<? php

// Запускаем команду `dir`

exec("dir", $output, $return);

// Распечатать возвращаемое значение статуса

echo "Возвращаемое значение команды` dir` - $ return \ n ";

echo "<pre>";

// Распечатать команду output

var_dump ( $ output ) ;

echo "</pre>";

?>

 

Читать  Использование функции ksort () в PHP

Заключение:

В этой статье были объяснены различные варианты использования функции exec(), чтобы помочь кодировщикам PHP узнать способ выполнения команды оболочки с помощью сценария PHP. Некоторые другие функции также существуют в PHP для выполнения задач того же типа.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Firefox имел отличный механизм расширений, основанный на XUL и XPCOM. Этот…

Спасибо!

Теперь редакторы в курсе.