LINUX.ORG.RU

PHP вызов скрипта через system не ординарно работает)


0

2

Доброе... Есть форма передающая данные на сторону php, из php идет вызов скрипта на bash'e через system():

<?php
header( "Content-Type: text/html; charset=utf-8" );
ini_set('display_errors',1);
error_reporting(E_ALL);
$start = microtime(true);

$name_user=$_POST['username'];
$surname=$_POST['surname'];
$otchestvo=$_POST['otchestvo'];
$familiya=$_POST['familiya'];
$country=$_POST['country'];
$oblast=$_POST['oblast'];
$city=$_POST['gorod'];
$godname=$_POST['godname'];

echo "Имя: ".$surname.'</br>';
echo "Отчество: ".$otchestvo.'</br>';
echo "Фамилия: ".$familiya.'</br>';
echo "Создатель: ".$godname.'</br>';

$par='NAME='.$name_user.'; ZIM='.$surname.'; ZIM_O='.$otchestvo.'; ZIM_F='.$familiya.'; RU='.$country.';  
OBL='.$oblast.'; CITY='.$city.'; COMP="RABOta"; OTDEL="otdel)"; NS="NameServer"';
system ("sudo /apps/expect_vpn.sh '$par' 2>&1");

echo "Пользователь создан".'</br>';
echo "Время выполнения: ".(microtime(true) - $start);

?>

Все хорошо работало, пока неожиданно при нажатии на кнопку формы не стала выводиться как обычно иноформация из system(). Просто echo php-скрипта и все.

При этом вызываемый скрипт на bash'e может выполниться, а может и нет. Можно только по (microtime(true) - $start) определить скрипт выполнен или нет. 9 секунд примерно на выполенние скрипта нужно.

safe_mode=off

Началось с того, что я стал делать перенос строк. и после echo ставил .</br>.

Решил вернуть все как было раньше, но не помогло.

В выводе system() иногда выдает такое:

/etc/openvpn/easy-rsa/2.0/expect_vpn.exp: line 20: warning: here-document at line 3 delimited by end-of-file (wanted `EOF')

При этом скрипт выполняется.

Запускаю еще раз и ни одной ошибки.

Может он устает?)))

С чем это может быть связано?

Прочитав первый комент от сюда и применив его, информация снова пошла, но не постоянно.

Может как то можно проверять на предмет пошел ли скрипт на исполенение или нет.

И как можно узнать скрипт исполнен или нет?

Может какойнить процресс бар)))

Спасибо.

Решено)

Дело было в генерации пароля со спец символами, когда выпадали кавычки он делил пароль и выдавал как команду.

Убрал не нужные символы и все заработало

Может пригодиться кому)

firefedot ()

пожалуйста-пожалуйста-пожалуйста, разбей все (слышишь, ВСЕ!) жесткие диски с копией этого кода молотком, обломки сожги в печи и развей на атлантическим океаном.

никогда (это понятно? Н-И-К-О-Г-Д-А!) больше не пиши ни строчки кода, — займись садоводством, резьбой по металу, художественным свистом или еще какой-нибуть безопасной для общества ерундой.

val-amart ★★★★★ ()
Ответ на: комментарий от val-amart

я тут подумал...

альтернативно, можешь мне дать доменное имя своего сервера — и тогда путевку в другую профессию тебе обеспечит твой работодатель.

val-amart ★★★★★ ()

Эталонный быдурокод.

ritsufag ★★★★★ ()

И кто мне теперь больничный оплатит? Я себе лобную кость фейспалмом сломал.

Delirium_veritas ()
Ответ на: комментарий от val-amart

Что тебя так расстроило? Да, на php не пишу, моя цель чтобы все работало и оно работает.

А говорить что мне делать, а что нет, это увы, не твоя прераготива. Даже если я и быдлокодер.

Умных много, смелых мало (с)

firefedot ()
Ответ на: комментарий от firefedot

На то, что так возмутило val-amart'а вам указывали еще в прошлом треде. Всё, что вы получаете от пользователя необходимо проверять на валидность и/или экранировать опасные символы. А вы неизвестно что суете в рутовский запрос на сервере.

Weres ★★★ ()
Ответ на: комментарий от Weres

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

firefedot ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.