Intereting Posts
ОЧЕНЬ Основные вкладки actionbarsherlock с фрагментами: FragmentTransaction имеет значение null в методе onTabSelected () Ошибка: неопределенный конструктор намерений при запуске службы в android Измерение кампании Android не работает Как «встряхнуть» устройство Android в эмуляторе Android, чтобы вызвать меню dev для отладки моего приложения React Native Задача RxJava Async в Android Когда использовать и когда не использовать фрагменты в Android? Как я могу определить скорость интернета в приложении для Android Использование DatePicker без выбора дневника Ошибка Genymotion после обновления Windows 10 Разрешить ввод с клавиатуры Bluetooth, даже если экран заблокирован ANDROID: сеанс совместного доступа между Webview и httpclient Как получить токен авторизации C2DM для использования городского дирижабля Соблюданные идентификаторы пакета «build-tools», 20.0.0 »в несовместимом месте Как получить Twitter и facebook Authentication and Token через классы Account Manager для Android Использовать RecyclerView внутри ScrollView с гибкой высотой элемента Recycler

Создайте андроид apk, используя сценарий оболочки из php?

Я пытаюсь генерировать файлы Android apk из сценария оболочки, я хочу выполнить файл сценария оболочки из PHP. Когда я запускаю сценарий оболочки в терминале, он работает отлично. Если я попытаюсь запустить скрипт с помощью PHP, сценарий оболочки не выполнит все команды. Команда ls в сценарии оболочки работает отлично, но при выполнении с использованием PHP другие команды не работают. Я использую сервер xampp в среде Linux.

Мой сценарий оболочки

 cd /home/user/AndroidStudioProjects/msvep4247-inghamautogroup-pulse-and/ ./gradlew assembleDebug cp -fr app/build/outputs/apk/app-debug.apk /opt/lampp/htdocs/sample/apk ls 

Вывод оболочки оболочки ls

App autolead_data_format.pdf build build.gradle cheek gradle gradle.properties gradlew gradlew.bat lib local.properties msvep4247-inghamautogroup-pulse-and.iml settings.gradle

Мой скрипт PHP

  <?php echo shell_exec('ls'); echo shell_exec('./generateApk.sh'); ?> 

Вывод PHP-скрипта ls

GenerateApk.sh generate.php APK

Примечание: ls выводит имена файлов в папке

Я установил все разрешения на файл для сценария оболочки на сервере xampp. Может ли кто-нибудь описать, где я ошибаюсь? Ожидает ответов …

Просто используйте полный путь к скрипту / исполняемому файлу, потому что при работе с php среда отличается.

Похоже, что PATH среды PATH в PHP-коде, которая выполняется на веб-сервере, более ограничена, чем та, в которой вы работаете. Но вы можете изменить переменные среды на PHP, а команды, которые вы начинаете с нее, будут видеть эти изменения.

 <?php // set content type so the output is more readable in the browser header('Content-Type: text/plain'); // set $PATH to some limited value putenv('PATH=/bin:/sbin'); // verify, note that we have to use full path to 'env' print(shell_exec("/usr/bin/env|grep '^PATH='")); // this command won't run (assuming its full path is /usr/bin/id) print(shell_exec("id")); // add more directories to $PATH putenv('PATH=/bin:/sbin:/usr/bin:/usr/sbin'); // verify again, we can use env without specifying the path this time print(shell_exec("env|grep '^PATH='")); // this command will print(shell_exec("id")); 

Поэтому вам нужно написать putenv('PATH=<your_shell_PATH_contents>'); В верхней части вашего PHP-скрипта. Использование полного пути к сценарию оболочки не поможет, если сам сценарий использует относительные пути к двоичным файлам, которые он запускает.