Как добавить расширения PHP для Composer в конвейер Azure DevOps

#php #azure #azure-devops #composer-php #azure-pipelines

#php #azure #azure-devops #композитор-php #azure-конвейеры

Вопрос:

Я пытаюсь развернуть свое приложение PHP (CakePHP) через Azure DevOps и установить зависимости Composer на этапе сборки конвейера, используя размещенный в Windows агент.

Установка composer завершается неудачно, поскольку обычные расширения PHP (а именно intl и fileinfo) недоступны для исполняемого файла PHP, запущенного в сборке. После развертывания веб-приложение в Azure имеет эти расширения. Расширение composer веб-приложения установлено в реальной службе приложений в Azure, и в composer.phar корне репозитория есть файл.

Шаг, который я пытаюсь выполнить, просто php composer.phar install --no-scripts --no-interaction --optimize-autoloader .

Конвейер завершается с этой ошибкой, но я понятия не имею, как получить доступ к файлу .ini или предоставить какие-либо параметры.

 To enable extensions, verify that they are enabled in your .ini files:
    - C:toolsphpphp.ini
 

Можно установить PHP_INI_SCAN_DIR, но этот «шаблон php» из DevOps стирает все добавленные свойства конфигурации при новом развертывании. Это также кажется совершенно другим PHP, чем то, что на самом деле работает служба приложений. Я могу создать новый шаблон для параметров конфигурации, но проблема с расширением PHP, похоже, все еще существует на этапе сборки.

Если кто-нибудь знает, как просто установить зависимости composer и включить их в созданный артефакт сборки (zip-файл), я был бы очень признателен. Спасибо!

Комментарии:

1. Вы можете попробовать изменить C:toolsphpphp.ini , чтобы включить расширения. например, запустите эту команду в задаче scrpt конвейера: echo "extension=intl" >> C:toolsphpphp.ini

Ответ №1:

Как указано в комментарии Леви Лу-MSFT, я смог изменить конфигурацию PHP, добавив новую задачу сборки с помощью задачи командной строки и введя:

 echo extension=intl >> C:toolsphpphp.ini
echo extension=fileinfo >> C:toolsphpphp.ini
 

Добавление кавычек вызвало проблему, но, похоже, без этого не работает.