Comando não encontrado quando executado via PHP shell_exec ()

3

Eu quero executar o seguinte comando no meu servidor Ubuntu usando php:

android create project --target 8 --name $fname --path ./$fname --activity MainActivity --package $fpack 2>&1

O comando acima é para criar um projeto de aplicativo para Android. Então, quando eu entro neste comando no meu terminal, então funciona bem, mas quando eu executo via PHP:

<?php
$fname = $_POST['fname'];
$fpack = $_POST['fpack'];
$email = $_POST['email'];

// Creating a new Android project.
var_dump(shell_exec("android create project --target 8 --name $fname --path ./$fname --activity MainActivity --package $fpack 2>&1"));

?>

Quando executo meu script PHP, recebo a seguinte saída:

string(26) "sh: 1: android: not found "

Por que funciona quando eu digito manualmente no terminal (da conta 'ashish' do usuário) mas não com o php? meu usuário e grupo do apache é o mesmo (cinza). Qualquer ajuda será apreciada:)

    
por Ashish 25.02.2015 / 09:08

2 respostas

1

A questão é um pouco antiga, mas para aqueles que experimentam este problema pode tentar definir as variáveis de ambiente de direta no servidor. O PHP usa a função putenv ().

Exemplo: // Definir Variável Ambiental

$JAVA_HOME = "/usr/lib/jvm/java-8-oracle"; 
$ANDROID_HOME = "/opt/android-sdk-linux";
$PATH="$JAVA_HOME/bin:/usr/local/bin:/usr/bin:/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_HOME/build-tools/24.0.0-preview";

putenv ("JAVA_HOME = $JAVA_HOME"); 
putenv ("PATH = $PATH");
    
por 28.04.2016 / 22:40
0

Provavelmente, seu $ PATH está definido incorretamente. Especifique o caminho completo para android ou defina seu caminho usando algo parecido com isto:

<?php
putenv(
    implode(PATH_SEPARATOR, array('/dir/containing/android', getenv('PATH')))
);

$fname = $_POST['fname'];
$fpack = $_POST['fpack'];
$email = $_POST['email'];

// Create a new Android project
var_dump(shell_exec("android create project --target 8 --name $fname --path ./$fname --activity MainActivity --package $fpack 2>&1"));
    
por 03.05.2015 / 12:16

Tags