| |
|
|
| | Для вызова внешних команд в php используются обратные кавычки, операторы shell_exec, system, exec и другие. Объясните чем они отличаются. Особенно обратные кавычки и shell_exec. Заранее спасибо. | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(19.02.2007 в 09:11)
| | | PHP пытается выполнить строку заключенную в обратные кавычки, как консольную команду и возвращает полученный вывод (т.е он не просто выдается на выходе а, например, может быть присвоен переменной). Использование обратных кавычек аналогично использованию функции shell exec(). Обратные кавычки недоступны в случае если установлен безопасный режим или отключена функция shell exec() Пример надо? | |
| |
|
|
| |
|
|
| |
для: Санька
(19.02.2007 в 09:50)
| | | shell exec тоже не будет работать при безопасном режиме... и при использовании shell exec вывод также можно сохранять в переменную...
мне нужно именно конкретное различие | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(19.02.2007 в 11:14)
| | | Леди если вы понимаете отлично тех. английский могу прислать текст. | |
| |
|
|
| |
|
|
| |
для: Санька
(19.02.2007 в 11:22)
| | | Английский я знаю...но не в совершенстве...учебник на английском у меня есть... впринципе я понинмаю что там написано..но видимо, из-за несовершенства знания мною английского не могу понять ту суть, чем именно они различаются.... видимо это знает тока мой препод... который не хочет этого говорить....говорит ищи.... я уже опросила всех знакомых..но никто точно не может сказать | |
| |
|
|
| |
|
|
| |
для: Санька
(19.02.2007 в 11:22)
| | | То, что обратные кавычки и shell_exec работают идентично, я тоже знаю.....препод мне сказал, что shell_exec придумали чтоб он выполнял еще какуюто функцию, которую не выполняют обратные кавычки | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(19.02.2007 в 11:31)
| | | Ясно может кто и знает то обязательно напишет ждите! А над чем трудитесь? | |
| |
|
|
| |
|
|
| |
для: Санька
(19.02.2007 в 11:38)
| | | Все просто и банально...делаю лабораторную....вернее я ее уже сделала...защитить не получается...и все изза того что не могу ответить почему shell_exec рациональнее всего остального....дело в том, что ранее я никогда на php вообще не писала...если что, то суть лабораторной состоит в следующем : сначала создается авторизация, затем выбор между двумя действиями : пингование и трассировка (ping и tracert это команды из командной строки для проверки работоспособности узлов в сети), эти команды вызываются с помощью shell_exec | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(19.02.2007 в 11:31)
| | | А где на клавиатуре эти обратные одинарные ковычки? А то что то искал так и не нашел :) | |
| |
|
|
| |
|
|
| |
для: Бамси
(19.02.2007 в 11:39)
| | | Зайди в таб. символов там вроде есть. | |
| |
|
|
| |
|
|
| |
для: Бамси
(19.02.2007 в 11:39)
| | | (``) это где буква ё стоит...тока надо на английский язык поставить | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(19.02.2007 в 11:31)
| | | shell_exec возвращает полный вывод, порожденный командой.
exec возвращает только последнюю строку этого вывода. Правда он может заполнить этими строками, переданный ему массив (второй аргумент), и вернуть статус возврата команды ( третий аргумент)
system может вернуть статус возврата и последнюю строку вывода.
бэктрик-оператор тоже отличается от shell_exec... Тем, что в shell_exec можно что угодно передать, а в косых кавычках удастся всунуть лишь константную строку.
Короче, сборная солянка.... каждая чуть чуть да отличается..... | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.02.2007 в 11:45)
| | | можно еще более подробно о обратных кавычках и shell_exec.... | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(19.02.2007 в 11:47)
| | | так... наврал. В бактриках, оказывается, переменные подставляются, как в обычных кавычках.
Можно считать, что
`command` эквивалентно $shell_exec("command") вплоть до подстановки переменных.
` | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.02.2007 в 11:56)
| | | пример использования обратных кавычек
<?php
$output = `ls -al`;
echo "<pre>$output</pre>";
?>
пример использования shell_exec
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
то, как они задаются и вывод у них идентичны..... | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.02.2007 в 11:56)
| | | препод мне сказал что shell_exec придумали еще для чего то....оно выполняет еще какуюто функцию....сказал искать какую.. | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.02.2007 в 11:45)
| | | и еще....не хочу конечно выгляить тупо...но все таки, в стремлении уточнить чтоб не облажаться на защите лабы, спрошу....константная переменная - популярно объясните, что это....я конечно догадываюсь, но лишним не будет | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(19.02.2007 в 11:58)
| | | Что такое константная переменная, я не знаю. Боюсь, это словосочетание может в ступор повергнуть не только преподавателя.
Вот пример, на котором можно что-то демонстрировать.
<form><input name=cmd /></form>
<?php include('config.inc.php');
if(isset($_REQUEST['cmd']))
{
$cmd = $_REQUEST['cmd'];
$out = `$cmd`;
//$out = shell_exec($cmd);
$out = htmlspecialchars($out);
$out = convert_cyr_string($out, 'd', 'w');
echo "<pre>$out</pre>";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(19.02.2007 в 12:02)
| | | мне бы популярнее... | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(19.02.2007 в 11:58)
| | | Строковая константа это можно сказать обычная строка, набор символов в кавычках.
(в ПХП, наверное, в апострофах... потому как в двойных кавычках не все символы воспринимаются как обычные)
А насчет shell_exec ничего не скажу. Предположу, что shell_exec может запускать шелл скрипты shell_exec("script.sh") - но, возможно, это будет выглядеть точно также и в обратных кавычах... | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(19.02.2007 в 14:23)
| | | Константная строка и строковая константа...кхм...я так подозреваю, что это не одно и то же..... | |
| |
|
|
| |
|
|
| |
для: Trianon
(19.02.2007 в 11:45)
| | | Тем, что в shell_exec можно что угодно передать, а в косых кавычках удастся всунуть лишь константную строку.
Вопрос : что угодно всунуть...это что например??? | |
| |
|
|
| |
|
|
| |
для: Ксюха-Фрукт
(20.02.2007 в 10:35)
| | | Я ж потом сказал, что ошибся - именно в этом утверждении.
Как в shell_access() , так и в обратные косые кавычки, передается строка команды.
Она (строка) может быть как фиксированной
$out = shell_access('ls');
$out = `ls`;
|
так и переменной
$cmd = 'dir'
$out = shell_access($cmd);
$out = `$cmd`;
|
в последнем случае - это частный случай подстановки, или как выражаются апологеты perl - интерполяции переменных.
Равно как и в следующих примерах:
$mask = '*'
$out = shell_access("dir $mask");
$out = `dir $mask`;
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(20.02.2007 в 10:48)
| | | команда shell_exec а не shell_access.....так все таки чем они отличаются??это вообще вопрос жизни и смерти... | |
| |
|
|