git — Запуск Хьюго из функции PHP exec ()

Я пытаюсь настроить скрипт непрерывного развертывания для Hugo на сервере стека LAMP, и последняя проблема, с которой я сталкиваюсь, — это заставить Hugo работать.

Фон

У меня на VPS установлены Hugo и PHP, а для моего приложения две директории:

  1. publicгде живет мой настоящий сайт.
  2. hugo, где вся моя установка Хьюго втягивается из GitHub.

Я использую веб-крючок GitHub для проверки связи deploy.php сценарий, когда я сливаюсь в master ветка. Вот соответствующая часть этого скрипта:

// 1. Pull the latest build from GitHub
exec('cd /path/to/hugo && git fetch --all && git reset --hard origin/master');

// 2. Run Hugo to compile any new posts and pages into HTML
exec('cd /path/to/hugo && hugo');

// 3. Copy the files in the /public directory from Hugo into the /public app directory
exec('cd /path/to/hugo && cp -r /path/to/hugo/public/. public');

Что происходит

Пункты 1 и 3 запускаются. Пункт 2 нет.

Более четко сказано: последняя сборка извлекается из GitHub, а любые файлы, которые я создал заранее, копируются из сборки Hugo в /public каталог.

Я не могу получить hugo бежать через exec()Впрочем, и я не совсем уверен, почему.

Если я SSH в сервер в окне терминала, cd в /path/to/hugo каталог и запустить hugo там все компилируется, как ожидалось, что исключает такие вещи, как «Возможно, Хьюго установлен неправильно» или «Возможно, Хьюго не доступен в этом каталоге».

Итак … что мне не хватает? Заранее спасибо!

1

Решение

Проверьте, является ли это проблемой с путем, то есть по умолчанию сеанс bash не будет запускать программу только потому, что вы находитесь в нужной папке: вы должны указать ее путь (в вашем случае: текущая папка)

Это означает: заменить && hugo с && ./hugo

Или, как ОП Крис Фердинанди сделал (Комментарии), вы можете использовать абсолютный путь:

Я ssh-ed на сервер и побежал which hugo чтобы получить соответствующий путь, и заменить && hugo с этим.

1

Другие решения

Других решений пока нет …