3

Я хочу выполнить следующую команду на моем сервере Ubuntu, используя php:

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

Приведенная выше команда предназначена для создания проекта приложения для Android. Поэтому, когда я ввожу эту команду на своем терминале, она работает нормально, но когда я выполняю ее через 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"));

?>

Когда я запускаю свой PHP-скрипт, я получаю следующий вывод:

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

Почему это работает, когда я вхожу вручную в терминале (из учетной записи пользователя 'ashish'), а не с php? мой пользователь и группа apache одинаковы (ashish). Любая помощь будет оценена :)

2 ответа2

1

Вопрос немного устарел, но для тех, кто сталкивается с этой проблемой, можно попытаться установить переменные окружения непосредственно на сервере. PHP использует функцию putenv ().

Пример:// Установить переменную Enviromental

$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");
0

Скорее всего, ваш $ PATH установлен неправильно. Укажите полный путь к android или установите путь через что-то вроде этого:

<?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"));

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .