Меня зовут phpenv. Я был разработан для людей, чтобы упростить управление несколькими установками пользовательских сборок PHP.
Изначально меня вдохновила выдающаяся работа обоих проектов, которые вы уже знаете и любите, а также целый ряд дополнений, ориентированных на PHP, которые помогут вам создать свой первый выпуск, упростить управление и работу с различными выпусками и продолжать создавать новый выпуск за новым. как будто ничего в этом нет.
Вы, как и мы, PHP-разработчик, и вам не только нужен новейший и самый свежий интерпретатор для работы с вашими скриптами, но вы также хотите увидеть, как они обрабатываются при использовании более старых интерпретаций. Вы когда-нибудь задумывались, почему вы не можете запустить PHP-приложение на своей машине для разработки? Что ж, вы только что нашли ответ, когда решили собрать PHP на своих машинах для разработки. Легко настраивайте параметры конфигурации и даже создавайте расширения pecl в PHP или впоследствии вручную. Настраивайте и устанавливайте пользовательские сборки одной и той же версии PHP непосредственно из репозитория исходного кода PHP, который хранится в вашей локальной папке .phpenv
.
phpenv работает с каталогом каждого пользователя ~/.phpenv
. Имена версий в phpenv соответствуют подкаталогам ~/.phpenv/versions
. Например, у вас могут быть ~/.phpenv/versions/5.3.8
и ~/.phpenv/versions/5.4.0
.
Каждая версия представляет собой рабочее дерево со своими двоичными файлами, например ~/.phpenv/versions/5.4.0/bin/php
и ~/.phpenv/versions/5.3.8/bin/pyrus
. phpenv создает промежуточные двоичные файлы для каждого такого двоичного файла во всех установленных версиях PHP.
Эти прокладки представляют собой простые сценарии-оболочки, которые находятся в ~/.phpenv/shims
и определяют, какую версию PHP вы хотите использовать. Они вставляют каталог выбранной версии в начало вашего $PATH
, а затем выполняют соответствующий двоичный файл.
Из-за простоты подхода с использованием прокладки все, что вам нужно использовать phpenv, — это ~/.phpenv/shims
в вашем $PATH
, который автоматически переключит версию.
Для более автоматизированной установки вы можете использовать phpenv-installer. Если вы предпочитаете ручной подход, выполните следующие действия.
Это поможет вам использовать последнюю версию phpenv, а также облегчит форк и внесение любых изменений обратно в исходную версию.
Проверьте phpenv в ~/.phpenv
.
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
Добавьте ~/.phpenv/bin
в $PATH
для доступа к утилите командной строки phpenv
.
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
Добавьте phpenv init в свою оболочку, чтобы включить прокладки и автодополнение.
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
Перезапустите оболочку, чтобы изменения пути вступили в силу. Теперь вы можете начать использовать phpenv.
$ exec $SHELL -l
(Необязательно) Установите в него php-build и любой php. (См. домашнюю страницу php-build)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(Необязательно) Пересоберите двоичные файлы оболочки. Вы должны делать это каждый раз, когда устанавливаете новый двоичный файл PHP.
$ phpenv rehash
Если вы установили phpenv, следуя инструкциям выше, вы можете обновить свою установку в любое время с помощью git.
Чтобы перейти на последнюю разрабатываемую версию phpenv, используйте git pull
:
$ cd ~/.phpenv
$ git pull
По умолчанию php-build скомпилирует PHP с набором параметров по умолчанию, указанным:
Обычно, если вам нужно указать, как PHP построен в вашей системе, вы можете добавить параметры конфигурации в переменную PHP_BUILD_CONFIGURE_OPTS
и добавить расширения PHP в переменную PHP_BUILD_INSTALL_EXTENSION
.
Предпочтительный способ подключения приложений phpenv — использование php-fpm после сборки php. Затем ваш веб-сервер можно настроить для подключения к экземпляру php-fpm. При таком подходе php будет работать с правами вызывающего пользователя, который не обязательно является веб-сервером.
php-fpm можно запустить одним из следующих способов:
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
php-fpm (8)
и указав аргументы командной строки По умолчанию php-fpm поставляется с файлом конфигурации ~/.phpenv/versions/$VERSION/etc/php-fpm.conf
, который он будет искать при запуске. Это настраивает php-fpm для прослушивания localhost:9000
при запуске. Вы можете отредактировать или заменить этот файл или указать другой файл конфигурации, используя аргумент командной строки --fpm-config
( -y
).
Инструкция по подключению разных веб-серверов к php-fpm:
В качестве альтернативы вы все равно можете использовать модуль Apache php, настроив php-build для создания расширения Apache libphp.so (инструкции, которым необходимо следовать). После этого Apache сможет найти libphp.so в папке ~/.phpenv/versions/$VERSION/libexec
. Этот файл можно использовать для директивы Apache LoadModule php5_module
, и при изменении он требует перезапуска Apache.
Пропустите этот раздел, если только вам не нужно знать, что делает каждая строка в вашем профиле оболочки.
phpenv init
— единственная команда, которая пересекает черту загрузки дополнительных команд в вашу оболочку. Вот что на самом деле делает phpenv init
:
Устанавливает путь для прокладок. Это единственное требование для правильной работы phpenv. Вы также можете сделать это вручную, добавив ~/.phpenv/shims
к $PATH
.
Устанавливает автодополнение. Это совершенно необязательно, но довольно полезно. Поиск ~/.phpenv/completions/phpenv.bash
настроит это. Также существует ~/.phpenv/completions/phpenv.zsh
для пользователей Zsh.
Перешивает прокладки. Время от времени вам придется пересобирать файлы прокладок. Выполнение этого при инициализации гарантирует, что все обновлено. Вы всегда можете запустить phpenv rehash
вручную.
Устанавливает диспетчер sh. Этот бит также является необязательным, но позволяет phpenv и плагинам изменять переменные в вашей текущей оболочке, что делает возможным использование таких команд, как phpenv shell
. Диспетчер sh не делает ничего сумасшедшего, например, переопределяет cd
или взламывает приглашение оболочки, но если по какой-то причине вам нужно, чтобы phpenv
был настоящим скриптом, а не функцией оболочки, вы можете смело пропустить это.
Запустите phpenv init -
чтобы увидеть, что именно происходит под капотом.
Как и git
, команда phpenv
делегирует подкоманды на основе своего первого аргумента. Наиболее распространенные подкоманды:
Покажите использование и полезную помощь. Если у тебя проблемы, сделай это ;)
$ phpenv help
$ phpenv help <subcommand>
php-build — это phpenv-совместимый плагин, который собирает и устанавливает php. Чтобы использовать установку phpenv, загрузите и установите плагин php-build, как описано в шаге 5 инструкций по установке выше.
Прежде чем запускать установку phpenv, убедитесь, что в вашей системе установлены версии разработки, необходимые для сборки php. В частности, если вы хотите собрать расширение apache, убедитесь, что установлен apache2-dev (или его эквивалент в вашей ОС).
Устанавливает глобальную версию PHP для использования во всех оболочках, записывая имя версии в файл ~/.phpenv/version
. Эту версию можно переопределить с помощью файла .phpenv-version
для каждого проекта или путем установки переменной среды PHPENV_VERSION
.
$ phpenv global 5.4.0
Специальная system
имен версий сообщает phpenv использовать системный PHP (определяется путем поиска в $PATH
).
При запуске без номера версии phpenv global
сообщает текущую настроенную глобальную версию.
Устанавливает локальную версию PHP для каждого проекта, записывая имя версии в файл .phpenv-version
в текущем каталоге. Эта версия переопределяет глобальную и может быть переопределена сама, установив переменную среды PHPENV_VERSION
или с помощью команды phpenv shell
.
$ phpenv local 5.3.8
При запуске без номера версии phpenv local
сообщает о текущей настроенной локальной версии. Вы также можете отключить локальную версию:
$ phpenv local --unset
Устанавливает версию PHP для конкретной оболочки, устанавливая переменную среды PHPENV_VERSION
в вашей оболочке. Эта версия переопределяет как версии, специфичные для проекта, так и глобальную версию.
$ phpenv shell 5.3.9
При запуске без номера версии phpenv shell
сообщает текущее значение PHPENV_VERSION
. Вы также можете отменить версию оболочки:
$ phpenv shell --unset
Обратите внимание, что для использования этой команды вам потребуется включить интеграцию оболочки phpenv (шаг 3 инструкций по установке). Если вы предпочитаете не использовать интеграцию с оболочкой, вы можете просто установить переменную PHPENV_VERSION
самостоятельно:
$ export PHPENV_VERSION=5.3.13
Перечисляет все версии PHP, известные phpenv, и показывает звездочку рядом с текущей активной версией.
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
Отображает текущую активную версию PHP вместе с информацией о том, как она была установлена.
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
Устанавливает прокладки для всех двоичных файлов PHP, известных phpenv (т. е. ~/.phpenv/versions/*/bin/*
). Запустите эту команду после установки новой версии PHP.
$ phpenv rehash
Отображает полный путь к двоичному файлу, который phpenv выполнит при запуске данной команды.
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
Исходный код phpenv размещен на GitHub. Он чистый, модульный и простой для понимания (спасибо проекту rbenv), даже если вы не хакер оболочки.
Этот проект по сути является клоном (читай: «поиск и замена») проекта rbenv. Оно нуждается в любви и поддержке. Если вы заинтересованы в его улучшении, не стесняйтесь создавать форки, отправлять запросы на включение и сообщать об ошибках в систему отслеживания проблем.
(Лицензия MIT)
Copyright (c) 2012 Доминик Джильо
Авторские права (c) 2013 г. Ник Ломбард
Авторские права (c) 2015, madumlao
Настоящим бесплатно любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), предоставляется разрешение на работу с Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение. публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Вышеупомянутое уведомление об авторских правах и настоящее уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ В ДЕЙСТВИЯХ ПО КОНТРАКТУ, ПРАВОНАРУШЕНИЮ ИЛИ ДРУГИМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ОТ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.