Я запускаю сборку Gradle с моего веб-сервера в качестве пользователя www-data с помощью команды
$command = "cd " . $path . "/;./gradlew :app:build --stacktrace";
exec($command, $output, $error);
Иногда это терпит неудачу с
но это все, что я получаю в качестве вывода, без подробной ошибки с номером строки, как если бы я получал прямой вызов скрипта.
Когда я делаю это и запускаю из командной строки, оно работает без ошибок (в этом случае)
Но даже в других случаях, когда оба случая терпят неудачу, нет конкретного выхода с вызовом php.
Я понятия не имею, почему оба способа запуска скрипта ведут себя совершенно по-разному, и я не знаю, как найти ошибку без каких-либо подробностей.
Что там происходит с выходом и как его включить?
Я решил проблему сейчас.
Проблема заключалась в том, что журнал Gradle разделяется на вывод по умолчанию и вывод ошибок. В оболочке оба печатаются по умолчанию.
Если вы записываете вывод в файл с
./gradlew assembleRelease --stacktrace > log.txt
вы регистрируете только вывод по умолчанию, а не вывод ошибок. Поэтому вам нужно
./gradlew assembleRelease --stacktrace > log.txt 2>&1
также добавить журнал ошибок в ваш файл.
Других решений пока нет …