👻
【mise】PHP を最小限のオプションでビルドする
【2024年6月25日追記】設定がすべて反映されていないので修正する必要があります
mise で PHP をインストールする場合、PEAR や Composer をダウンロードできなくて失敗したり、不要なエクステンションが多いのでビルド時間が長くなる問題に遭遇した。
ほとんどのコンパイルオプションを無効にするために $HOME/.local/share/mise/plugins/php/bin/install
の3箇所を修正することになった
install
if [ "$PHP_NUTRAL" = "yes" ]; then
global_config="--prefix=$install_path \
--sysconfdir=$install_path \
--with-config-file-path=$install_path \
--with-config-file-scan-dir=$install_path/conf.d"
export PHP_WITHOUT_PDO_PGSQL=yes
export PHP_WITHOUT_PEAR=yes
export PHP_WITHOUT_COMPOSER=yes
else
global_config="--prefix=$install_path \
--enable-bcmath \
--enable-calendar \
--enable-dba \
--enable-exif \
--enable-fpm \
--enable-ftp \
--enable-gd \
--enable-gd-native-ttf \
--enable-intl \
--enable-mbregex \
--enable-mbstring \
--enable-mysqlnd \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--enable-zip \
--sysconfdir=$install_path \
--with-config-file-path=$install_path \
--with-config-file-scan-dir=$install_path/conf.d \
--with-curl \
--with-external-gd \
--with-fpm-group=www-data \
--with-fpm-user=www-data \
--with-gd \
--with-mhash \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-xmlrpc \
--with-zip \
--with-zlib \
--without-snmp"
fi
install
if [ "$PHP_NEUTRAL" = "yes" ]; then
configure_options="--with-openssl \
--with-curl \
--with-zlib \
--with-readline \
--with-gettext"
fi
install
if [ "$PHP_NEUTRAL" = "yes" ]; then
export PHP_WITHOUT_PEAR=yes
export PHP_WITHOUT_PDO_PGSQL=yes
export PHP_WITHOUT_COMPOSER=yes
fi
install_php "$ASDF_INSTALL_TYPE" "$ASDF_INSTALL_VERSION" "$ASDF_INSTALL_PATH"
if [ "$PHP_WITHOUT_COMPOSER" = "yes" ]; then
install_composer "$ASDF_INSTALL_PATH"
fi
ビルドは次のように行う
ASDF_CONCURRENCY=$(nproc) \
PHP_NUETRAL=yes \
mise install php 8.3.7
PHP_NEUTRAL
という名前は phpbrew
の neutral
オプションに由来する。PHP_WITHOUT_DEFAULT
も考えたが DEFAULT
は乱用されがちな言葉なので却下した。
PEAR を無効にすると pecl もインストールされないので pecl.php.net を利用したい場合、pickel
を手動でインストールする必要がある。
Discussion