Создайте андроид 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-скрипта. Использование полного пути к сценарию оболочки не поможет, если сам сценарий использует относительные пути к двоичным файлам, которые он запускает.

Intereting Posts
Проблема с возможностями подключения к Google Maps V2 Придерживайтесь в нижней части фрагмента панели просмотра внутри координатора Когда закрыть соединение db на Android? Каждый раз после завершения операции или после выхода из приложения Jar этого файла класса принадлежит контейнеру «Android Dependencies», который не позволяет изменять исходные вложения в своих записях Как изменить ширину элемента меню переполнения панели управления sherlock? IScroll – сохранение собственного вертикального прокрутки – работает в iOS, а не в Android Установить выделение в HorizontalScrollView Утечка памяти Android WebView при использовании активов Как установить Referer на веб-обозревателе Android в KitKat и вверх Сделайте строки равными по высоте по высоте экрана в Android-устройстве Переменная экземпляра становится пустой в сохраненном фрагменте Защита от спама onclick () Android – потоковое интернет-радио Вызывать IntentService от onDestroy Экземпляр для одного телефона