Фон
Поэтому я создаю страницу HTML и PHP, которая, когда пользователь нажимает кнопку, использует такие инструменты, как Ionic, чтобы создать приложение из файлов конфигурации и подписать его, а затем автоматически загрузить его в соответствующее хранилище.
Я создал страницу индекса PHP, которая находится в папке «htdocs» на сервере MAMP и прекрасно работает, когда вы переходите к «localhost: 8888» в браузере, все работает нормально, и когда нажимается кнопка «Отправить», выполняется быстрый вызов AJAX, который запускает другой PHP-файл, который запускает сценарии bash, которые выполняют всю работу по упорядочению файлов и папок, распаковке и, в конечном итоге, использованию grunt для запуска различных ионных процессов над файлами.
Проблема возникает с командой «grunt». У меня есть сценарий, который отлично выполняет каждую команду, и у меня даже есть файл журнала, поэтому я могу проверить его выполнение при вызове сценария с помощью кнопки на странице. Он проходит весь путь до ворчливой команды, а затем, кажется, просто пропускает ее. Когда я запускаю сценарий, используя все те же параметры в терминале, он работает прекрасно, и даже вызов grunt выполняется и выполняется хорошо, но как только я пытаюсь использовать точно такой же сценарий, используя созданную интерфейсную страницу, grunt Команда игнорируется, и каждая другая команда, кажется, успешно нажата.
Просто для повторения итерации, когда я запускаю скрипт с использованием терминала и передаю те же самые входные параметры, он работает, но когда я использую страницу и нажимаю кнопку, все остальное работает, и команда grunt пропускается или пропускается или не выполняется?
Вопрос
Итак, мой вопрос: почему это происходит и как я могу это исправить? Это как-то связано с MAMP или ворчанием?
Дополнительная информация:
Страница PHP хранится в папке htdocs MAMP, так что когда вы вводите localhost в браузер, она загружает эту страницу индекса.
/ Применение / MAMP / HTDOCS
Здесь также хранится файл PHP, который вызывает скрипты и возвращает на страницу индекса параметр успеха, так как он вызывается с помощью быстрой функции AJAX.
Сценарии, однако, расположены локально на компьютере, просто в простой папке для тестирования, которую я создал для тестирования системы. Возможно, здесь возникает проблема? Однако, как указано, скрипт работает и перемещает папки, копирует их, расстегивает молнию на них, но как только ворчание вызывается для запуска нескольких ионных процессов, он пропускает его.
Спасибо, что нашли время, чтобы прочитать это, и если у вас есть какие-либо вопросы или вам нужен код, пожалуйста, дайте мне знать, однако я считаю, что это не проблема, основанная на коде, а скорее теоретическая проблема. Но я более чем готов выложить код в случае необходимости.
Добавлен фрагмент кода
Я добавил код, который, кажется, вызывает проблемы, это из сценария, который вызывается. Этот фрагмент существует в операторе IF и ему удается успешно пройти весь путь до вызова «exec grunt», я пробовал много разных вариантов этого, включая cd-ing в каталог, затем просто командовал «grunt» и даже помещал grunt Команда в свой собственный скрипт PHP, чтобы увидеть, если это работает, ничего не работает с этой командой grunt.
echo "====================================="echo "| |"echo "| Sources avaliable, ok to proceed |"echo "| |"echo "====================================="timestamp=$( date +%T )
echo "$timestamp ==== Sources file is avaliable <br />" >> "$LOG_FILE"
echo "====================================="echo "| |"echo "| Beginning the UN-zip and Move! |"echo "| |"echo "====================================="timestamp=$( date +%T )
echo "$timestamp ==== Un-zipping now starting <br />" >> "$LOG_FILE"
if [ -d "zz_app-framework_adrian_plus" ]; then
echo "Framework already exists so skip the un-zip phase"else
echo "Framework not present so, unzipping into current dir"unzip ../../Master/zz_app-framework_adrian_plus.zip -d .
fi
#REVISED --- #unzip ../../Master/zz_app-framework_adrian_plus.zip -d .
timestamp=$( date +%T )
echo "$timestamp ==== Un-zipping done! <br />" >> "$LOG_FILE"
echo "====================================="echo "| |"echo "| Unzip complete |"echo "| |"echo "====================================="
#REVISED --- #cd zz_app-framework_adrian_plus
rm -r zz_app-framework_adrian_plus/sources
unzip -o sources.zip -d zz_app-framework_adrian_plus/
rm -r zz_app-framework_adrian_plus/sources/appsmart-cfg.json
timestamp=$( date +%T )
echo "$timestamp ==== Config now swithcing <br />" >> "$LOG_FILE"
pwd
locate=$(pwd)
php ../../Master/getConfig.php "$apptoken" "$locate"
timestamp=$( date +%T )
echo "$timestamp ==== Config file replaced! <br />" >> "$LOG_FILE"
echo "====================================="echo "| |"echo "| Sources and Config updated... |"echo "| |"echo "====================================="
echo "====================================="echo "| |"echo "| Beginning Ionic Build |"echo "| |"echo "====================================="
timestamp=$( date +%T )
echo "$timestamp ==== Beginning Ionic processes <br />" >> "$LOG_FILE"
if [ -d "zz_app-framework_adrian_plus/project/platforms" ]; then
echo "Platforms already exist, deleting first before continuing!" >> "$LOG_FILE"rm -r zz_app-framework_adrian_plus/project/platforms
else
echo "No Platforms exists, please check folders, however script will continue" >> "$LOG_FILE"fi
timestamp=$( date +%T )
echo "$timestamp ==== About to call grunt <br />" >> "$LOG_FILE"
exec grunt --base zz_app-framework_adrian_plus/project/ --gruntfile zz_app-framework_adrian_plus/project/Gruntfile.js
timestamp=$( date +%T )
echo "$timestamp ==== Grunt completed! <br />" >> "$LOG_FILE"
echo "====================================="echo "| |"echo "| Build Complete, Now Signing |"echo "| |"echo "====================================="
timestamp=$( date +%T )
echo "$timestamp ==== Beginning Signing process <br />" >> "$LOG_FILE"
locationOfApk=$(pwd)
fulllocation="$locationOfApk/zz_app-framework_adrian_plus"keylocation="../../Master/"
../../Master/./signit.sh "$apptoken" "$ident" "$slug" "$fulllocation" "$keylocation"
timestamp=$( date +%T )
echo "$timestamp ==== Signing Done! <br />" >> "$LOG_FILE"
echo "====================================="echo "| |"echo "| Signing Complete! |"echo "| |"echo "====================================="
echo "====================================="echo "| |"echo "| Uploading to store... |"echo "| |"echo "====================================="
timestamp=$( date +%T )
echo "$timestamp ==== Now uploading to store... <br />" >> "$LOG_FILE"
Задача ещё не решена.
Других решений пока нет …