Problemas ao executar comando com a função exec()
Olá à todos,
Estou com um problema ao executar o seguinte comando pela função exec():
<?
exec("cd /opt/lampp/htdocs/samp/6000/ && ./6000 &");
?>
No começo, pensava que era alguma restrição do linux para bloquear a função exec,
mas depois executei o seguinte código e ele teve retorno:
<?php
function GetPing($ip=NULL) {
if(empty($ip)) {$ip = $_SERVER['REMOTE_ADDR'];}
if(getenv("OS")=="Windows_NT") {
$exec = exec("ping -n 3 -l 64 ".$ip);
return end(explode(" ", $exec ));
}
else {
$exec = exec("ping -c 3 -s 64 -t 64 ".$ip);
$array = explode("/", end(explode("=", $exec )) );
return ceil($array[1]) . 'ms';
}
}
echo GetPing();
?>
Esse código me retornou ao ping da máquina em que o rodei, no caso 218ms.
Me falaram que o PHP restringe alguns comandos do linux, mas o que fazer para desbloquear esses comandos?
Na verdade eu nem sei se é realmente isso, só estou tentando chegar a algumas conclusões...
Obrigado!
Re: Problemas ao executar comando com a função exec()
Nota: Quando o safe mode estiver ativo, você só pode chamar executáveis dentro de safe_mode_exec_dir. Por razões práticas não é permitido haver .. no caminho do executável.
safe_mode_exec_dir string Se o PHP for usado no modo seguro,
system() e as outras
funções que executam programas do sistema se recusam a executar programas que não estão no diretório atual. Você deve usar
/ como separador diretório em todos os ambientes, inclusive o Windows.
Veja se isso lhe ajuda a resolver o problema.
Re: Problemas ao executar comando com a função exec()
Olá,
Pelo que eu entendi, ele só executa o que estiver no diretório atual, sendo que no meu comando eu utilizei o comando CD:
<?
exec("cd /opt/lampp/htdocs/samp/6000/ && ./6000 &");
?>
Então o que eu deveria fazer? Pois meu safe_mode e meu safe_mode_exec_dir já estão off.
Aguardo respostas!
Re: Problemas ao executar comando com a função exec()
ver qual usuário o seu php usa e adiciona ele no sudores...
Re: Problemas ao executar comando com a função exec()
pedrovigia: utilizei a função get_current_user() para verificar exatamente isso, e retorna a root ;)
dimasters: Sim, utilizo o cd no diretório e depois executo.
Já tentei fazer ./opt/lampp/htdocs/samp/6000/6000 & e não funcionou
Quais logs? mexo em linux faz 5 dias só :D
Re: Problemas ao executar comando com a função exec()
Consegui resolver, desinstalei o LAMPP e instalei tudo separado (Apache + MySQL + PHP + FTP) e funcionou! Obrigado à todos!