Я собираюсь обновить этот вопрос, потому что принятый здесь ответ, похоже, не работает для меня, и даже если это так, это очень хрупкое решение. Установка PHP, подтвержденная AWS для Ubuntu 18.04 (v2), похоже, была скомпилирована из исходного кода вместе со всеми другими поддерживаемыми «версиями времени выполнения», а затем выгружена в / usr / local. Если вы заглянете в эту папку, вы сразу заметите, что вы получили ВСЕ версии среды выполнения, независимо от того, какую версию вы указали в файле buildspec. Возникает вопрос, почему версия времени выполнения требуется или даже включена в файл buildspec? Я предполагаю, что AWS делает это, делая вид, что у них больше возможностей и более сложной системы, чем они есть на самом деле.
Итак, как вы получаете рабочую версию PHP? Следующее является частью файла buildspec.yml, который я использую. Вы можете выбрать любые версии исполнения, какие захотите, мы уже установили, что этот параметр ничего не делает. Затем вам нужно удалить весь мусор PHP AWS, включенный в / usr / local / bin, потому что это местоположение находится перед / usr / bin в среде PATH. Я предполагаю, что это было сделано Amazon, чтобы сделать этот процесс максимально трудным. Теперь, когда у вас больше нет PHP в пути, вы можете установить версию PHP для менеджеров пакетов через apt-get install -y php7.2-cli php7.2-zip
. Наконец, не забудьте запустить phpenmod
для установленных модулей, чтобы убедиться, что они включены.
version: 0.2
run-as: root
phases:
install:
runtime-versions:
nodejs: 8
commands:
- rm -f /usr/local/bin/php*
- rm -f /usr/local/bin/phar*
- rm -f /usr/local/bin/pear*
- rm -f /usr/local/bin/pecl*
- apt-get update
- apt-get upgrade -y
- apt-get install -y php7.2-cli php7.2-zip
- phpenmod zip