Как использовать Linux команды в PHP?

Это будет короткая статья, потому что тут особо и нечего рассказывать. Про команды на windows-серверах возможно расскажу когда-нибудь в следующий раз. Сегодня про linux.

Использоваться будет функция shell_exec, принимающая один параметр со строкой в которой находится команда для сервера.
Кстати, в безопасном режиме команда не работает.

Благодаря этой команде можно написать эдакую свою мини-панель управления компьютером или сервером.
С шеллами нужно быть крайне осторожными, потому что они являются довольно частой причиной взлома ваших веб-сайтов.

Выполняются шеллы обычно от имени www-data. Чтобы узнать точно, нужно выполнить такой shell-скрипт:

$user_shell = shell_exec('whoami');
echo $user_shell;

Можно так же создавать bash скрипты

shell_exec('sh script.sh');

Для примера накидал скрипт, который при помощи linux команд и shell_exec выведет информацию о процессоре, озу и видеокартах сервера прямо на вашу веб-страницу.

<?php
	echo "<pre>"; //Откроем тег pre

	echo "Процессор \n"; //Выведем на экран надпись "Процессор", под которой будет находиться инфа о процессоре
	$cpu = shell_exec('cat /proc/cpuinfo | grep "model name"'); //используем шелл
	//благодаря шеллу выше мы получили информацию о процессоре
	echo $cpu ."\n\n"; //Выводим инфу о процессоре

	echo "Оперативная память \n"; //Выводим надпись под которой будет инфа
	$memtotal = shell_exec('cat /proc/meminfo | grep  "MemTotal:" | awk \'{print($2)}\''); //Получаем число
	echo ($memtotal / 1024) . " мб \n\n"; //Переводим в мегабайты объем оперативки

	echo "Видеокарта (видеокарты) \n"; //Выводим надпись про видюху
	$video = shell_exec('lspci | grep -E "VGA|3D"'); //Получаем видюху. Или видюхи, если их несколько
	echo $video; //Выводим на экран инфу

	echo "</pre>"; //Закроем тег pre
?>