Функции Язык программирования PHP

escapeshellcmd

(PHP 3, PHP 4)

escapeshellcmd - escape-ирование метасимволов оболочки/shell.

Описание

string escapeshellcmd (string command)

escapeshellcmd() заменяет мнемониками любые символы в строке, что может использоваться для выполнения в оболочке произвольных команд. Эта функция должна использоваться для гарантирования того, что любые данные, приходящие от пользователя, escape-ируются, прежде чем передаются функциям exec() или system(), или операции backtick. Стандартное использование таково:

$e = escapeshellcmd($userinput); system("echo $e"); // здесь нас не волнует, 
имеются ли пробелы в $e $f = escapeshellcmd($filename); system("touch \"/tmp/$f\"; 
ls -l \"/tmp/$f\""); // а здесь волнует, //поэтому используем кавычки

См. также escapeshellarg(), exec(), popen(), system() и операцию backtick.


Назад Оглавление Вперёд
escapeshellarg Вверх exec

Глава 24. Использование PHP из командной строки

Эта опция позволяет выполнять PHP прямо в командной строке. Начальный и конечный тэги PHP (<?php и ?>) не нужны и вызывают ошибки разборщика.

Примечание: нужно проявлять внимание при использовании этой формы PHP, чтобы не было противоречий с заменой переменных командной строки, выполняемой оболочкой.

Пример, выводящий ошибку разборщика:

$ php -r "$foo = get_defined_constants();" Command line code(1) : Parse error 
- parse error, unexpected '='

Проблема здесь в том, что sh/bash выполняет замену переменной даже при использовании двойных кавычек ". Поскольку переменная $foo вряд ли определена, она ни во что не разворачивается, что в результате даёт код, передаваемый в PHP для выполнения, фактически прочитанный:

$ 
php -r " = get_defined_constants();"