sasnnick
@sasnnick
Эникейщик

Как запускать go lang скрипты с помощью php exec?

При выполнении из консоли:
go run main.go

Выводит:
cannot find package "github.com/PuerkitoBio/goquery" in any of:
        /usr/lib/go/src/github.com/PuerkitoBio/goquery (from $GOROOT)


выполняю ниже

export GOPATH=/usr/lib/go

Скрипт в консоли отрабатывает успешно.
Выполняю из под PHP:

exec('go run /var/www/mysite.ru/blog/go/main.go 2>&1', $output);
print_r($output);


Ответ:
Array
(
[0] => sh: 1: go: not found
)

Пробовал прописать пути GOPATH, GOROOT в ~/.bashrc но не помогло. Что я делаю не так?
  • Вопрос задан
  • 934 просмотра
Пригласить эксперта
Ответы на вопрос 3
@galliard
go run main.go


Это вариант запуска при разработке, готовое приложение компилируется и запускается как бинарник, а там уже никакие GOPATH и GOROOT не нужны.

Компиляция делается командой
go build main.go

Подробнее про GOPATH и GOROOT можешь почитать на хабре
https://habr.com/post/249545/
Ответ написан
@PapaStifflera
Родился, вырос...
Что я делаю не так?

Абсолютно все. Начнем с того, что нет такого понятия как "go-скрипт". Есть исходняй код на Go и компилятор+линковщик. Команда go build <имя-файла.go> запускает процесс компиляции и линковки. На выходе вы получите бинарный файл для текущей операционной системы и архитектуры процессора (по умолчанию, можно изменить через параметры). Далее помещаете полученный бинарный файл в директорию из PATH. Все. Можете запускать хоть через PHP, хоть через bash.
Ответ написан
GOPATH и GOROOT нужны для работы самого Go, а у вас PHP не может найти исполняемый файл Go, так что либо укажите полный путь к нему (типа, /usr/local/go/bin/go), либо добавьте в переменную окружения PATH путь к нему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы