Вопрос по комане Exec()

tolik777

Новичок
Вопрос по комане Exec()

Есть вопросик по команде Exec;
exec($com_string, $result, $res);
if(!$res) return true;
else return false;

Т.е. если в $res что-то пришло, значит ошибка.
А что если функция exec вообще запрещена в php.ini?
По идее $res вообще ничего не вернет и команда будет считаться выполненной. Или я ошибаюсь?
Как определить что exec выключен?
 

SiMM

Новичок
> А что если функция exec вообще запрещена в php.ini?
Возьми да проверь.

> Как определить что exec выключен?
[m]ini_get[/m]('disable_functions'); видимо.
 

SiMM

Новичок
> Если бы имел доступ к php.ini, то не спрашивал бы
Что тебе мешает проверить на localhost'е, а не на сервере?
 

tolik777

Новичок
Просто делаю универсальный код, чтобы при переезде к новому хостеру в код не приходилось лезть. Поэтому посмотреть вручную включен ли exec, system и т.п. отпадает. Нужно чтобы программа делала.
Решение нашел:
PHP:
$dis_f = ini_get('disable_functions');			
if(!strstr($dis_f,"exec")){	
   ........			
   exec($com_string, $result, $res); 
   ........
}
else{
   return false;
}
Правильнее конечно было бы regexp проверить наличие exec, но пока и так сойдет.
 

crocodile2u

http://vbolshov.org.ru
functions_exists() ?

Это просто вопрос - я вообще-то не знаю, что вернет functions_exists('func'), если func запрещена в php.ini
 

SiMM

Новичок
> Правильнее конечно было бы regexp проверить наличие exec
Правильнее было бы сделать
PHP:
if (strpos(','.ini_get('disable_functions').',', ',exec,') !== false) ...
Хотя может регулярником и лаконичней.
crocodile2u, возьми да проверь :)
 

crocodile2u

http://vbolshov.org.ru
дык это понятно. :)
Неохота сейчас настройки править - думал мож кто знает. Хотя, имхо, должно работать.
 

tolik777

Новичок
> if (strpos(','.ini_get('disable_functions').',', ',exec,') !== false) ...

А если exec будет первая стоять и перед ней не будет запятой? тогда не сработает.
 

SiMM

Новичок
> А если exec будет первая стоять
Ну и что?
> и перед ней не будет запятой?
А перед ней и не должно быть запятой.
> тогда не сработает.
PHP:
$disable = 'exec';
var_dump(strpos(','.$disable.',', ',exec,') !== false);
PS: кстати, я не утверждал, что мой if подойдёт один к одному вместо оригинального if'а - в моём случае then и else меняются местами.
 
Сверху