+ Responder ao Tópico



  1. #1

    Padrão 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!

  2. #2
    Avatar de shuttner
    Ingresso
    Aug 2008
    Localização
    Boa Vista - Roraima
    Posts
    257
    Posts de Blog
    1

    Padrão 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.



  3. #3

    Padrão 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!
    Última edição por FarinhadeOsso; 25-06-2011 às 12:22.

  4. #4

    Padrão Re: Problemas ao executar comando com a função exec()

    ver qual usuário o seu php usa e adiciona ele no sudores...

  5. #5

    Padrão 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ó

  6. #6

    Padrão 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!