+ Responder ao Tópico



  1. #1

    Padrão Executar comandos linux de dentro de um arquivo php

    Olá pessoal,
    Estou precisando Executar comandos linux de dentro de um arquivo php.
    Eu sei que posso fazer isso com os comandos exec, ou shell_exec no php, mas não está funcionando;
    Se eu mando ele dar um echo exec(ls -l) por exemplo, ele executa numa boa, mas se eu mando ele, por exemplo escrever em um arquivo : exec($arg) sendo $arg = "echo teste >> teste.txt"; ele não faz nada, mas também não retorna nenhum erro. É problema de permissão, estive pesquisando sobre o SUDO, mas não entendi exatamente o que eu tenho que fazer, se alguém pudesse ajudar, ficaria muito grata =]

  2. #2

    Padrão

    Deise,

    Tem que ver se o usuário que roda o apache tem permissão para escrever o arquivo. tente colocar o caminho completo:

    $arg = "echo teste >> /tmp/teste.txt";

    por exemplo. Só uma coisinha... verifique, antes de fazer execução de comandos via 'exec' se não é possível executar as mesmas funções usando comandos padrões do PHP. Principalmente se o seu script php for planejado para publicação na web.

    Há que se ter muito cuidado com a segurança.



  3. #3

    Padrão

    por exemplo quais comandos padrão do php?
    outra coisa, antes de executar esses comandos, eu preciso que o usuário se logue no linux, através dessa página php, estou usando o seguinte script:
    <?php
    session_start();

    $usuario=$_POST["usuario"];
    $senha=$_POST["senha"];
    $servidor = $_SERVER['HTTP_HOST'];
    $conexao = ftp_connect($servidor);
    if(!$conexao){
    echo "Servidor fora do ar";
    //echo '<META HTTP-EQUIV="REFRESH" CONTENT="2; URL=teste2.html">';

    }else{

    if((empty($senha))or(empty($usuario))){

    echo "Usuario e Senha em branco";
    // echo '<META HTTP-EQUIV="REFRESH" CONTENT="2; URL=teste2.html">';

    }else{

    if (@ftp_login($conexao, $usuario, $senha)) {
    echo "Conexao efetuado com sucesso\n";
    echo "Voce esta conectado como [email protected]$servidor\n";
    echo "Command : \n";
    echo exec("ls -l /var/deise");
    //header("Location: index.html");
    exit;
    } else {
    echo "Usuario ou senha incorretos";
    // echo '<META HTTP-EQUIV="REFRESH" CONTENT="2; URL=teste2.html">';
    }
    }}
    ftp_close($conexao);
    ?>

    Mas não está funcionando, só retorna a mensagem servidor fora do ar, pois ele não consegue estabelecer uma conexão, sendo que estou logada nesse servidor tanto com o WinSCP quanto com o Putty. Será que é por que ele tenta estabelecer a conexão por ftp? Tem algum outro meio de fazer essa autenticação?

    Thanxxx