shell — запуск скрипта php с использованием ошибок ansible throws

Я пытаюсь запустить скрипт php на удаленном сервере, используя ansible.
Запуск сценария с пользователем ansible (который ansible использует для входа на сервер) работает отлично. Однако задание ansible не выполняется, если в моем php-скрипте есть операторы include.

Мой php скрипт лежит в

/ SRV / проект

он пытается включить

включает / someLibrary.php

Все отлично работает при запуске скрипта, как любой пользователь с правильными правами доступа, но при запуске его через задание с заданием

- имя: запустить скрипт
shell: 'php /srv/project/script.php'

это терпит неудачу с:

не удалось открыть поток: нет такого файла или каталога в /srv/project/includes/someLibrary.php

Запуск очень простого сценария PHP работает хорошо, хотя.

0

Решение

Я только что нашел решение проблемы.
Проблема заключалась в том, что когда я выполнял сценарий вручную, я подключался к серверу и cd’d в /srv/project каталог перед звонком php script.php ПГПС include в этом случае ищет в текущем каталоге файлы, которые я хочу включить. Когда ansible подключается к серверу, он не меняет каталог, создавая no such file or directory ошибка. Решение этого простое, так как модуль оболочки принимает chdir в качестве аргумента, чтобы изменить каталог на тот, который указан до запуска команды.

Моя задание теперь выглядит следующим образом:

- имя: запустить скрипт
shell: 'php /srv/project/script.php'
арг:
chdir: '/ srv / project'

Спасибо всем за вашу помощь!

3

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

Ansible запускается в неинтерактивном ssh-сеансе и, следовательно, не применяет настройки среды пользователя (например, .bashrc, .bash_profile). Это, как правило, является причиной различного поведения при интерактивном и нет. Проверьте разницу между интерактивным printenv и raw: printenv через Ansible, и вы, вероятно, найдете то, что нужно установить (через ANSIBLE Task / Play environment: блок), чтобы заставить вещи работать.

0

По вопросам рекламы [email protected]