我想使用 php 在我的 Ubuntu 服务器上执行以下命令:
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)。任何帮助都将不胜感激 :)
答案1
这个问题有点老了,但是对于那些遇到此问题的人,可以尝试在服务器上直接设置环境变量。PHP 使用 putenv() 函数。
例如:// 设置变量环境
$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");
答案2
最有可能的是,您的 $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"));