Я запускаю следующую задачу в некотором сценарии развертывания для приложения PHP:
- name: Update composer dependencies
composer:
command: update
working_dir: "{{ release_path }}/src"
ignore_platform_reqs: true
В целевой системе версия CLI PHP — 7.3
, но есть также бинарный /usr/bin/php7.2
, который я хочу использовать.
Как я могу использовать модуль композитора и запустить с ним определенную версию PHP... или мне нужно запустить это через модуль оболочки, как это?
- name: Update composer dependencies
shell: "/usr/bin/php7.2 composer update"
args:
chdir: "{{ release_path }}/src"
@Майкл Д. Спасибо за это, но это не вариант. Значение по умолчанию php
должно указывать на текущую версию php 7.3. Я просто хочу запустить эту конкретную команду с другой версией php.
В соответствии с документом Ansible для Композитор есть возможность указать исполняемый файл php, который вы хотите использовать.
Таким образом, вы можете использовать что-то вроде ниже для вашего случая
- name: Update composer dependencies
composer:
command: update
working_dir: "{{ release_path }}/src"
ignore_platform_reqs: true
executable: /usr/bin/php7.2
Я вообще упустил из виду этот вариант. Спасибо, это решение.
С моей стороны
/usr/bin/composer
это исполняемый файл, и у него есть крутая штука#!/usr/bin/php
. Я бы проверил, указывает ли эта символическая ссылка/usr/bin/php
на правильный двоичный файл php (ls -l /usr/bin/php
). После этого вы можете запускатьcomposer
прямо из вашего скрипта, и все другие инструменты, вызывающие php, также будут использовать правильную версию.