🐘

ubuntu22.04 + asdf php 環境の構築時メモ

2023/05/24に公開

ubuntu22.04 + asdf php 環境の構築時メモ

私はpythonやnodejsやrubyなどの言語ランタイムを複数バージョンで管理したいことが多いのですが
dockerで構築することもあれば、dockerでくるまれた環境ではない、素の状態を扱いたいこともあります。その際asdfを使っています。

https://zenn.dev/hiroshimraz/articles/2598456e4c94f9

上記でasdfのpythonをセットアップしていた環境に
phpを追加でセットアップしました
そのメモを残しておきます。

※クリーンなubuntu22.04環境からセットアップもできそうな形で記述してみていますが、過不足あったらすみません

手順

1.asdf

asdfはbrewからインストールします。

$ brew install asdf

インストール後にshellの設定にasdf関連のスクリプトを追加します

$ echo -e "\n. \"$(brew --prefix asdf)/libexec/asdf.sh\"" >> ~/.bashrc
$ source .bashrc

2.plugin

asdfのpluginにphpを追加します

$ asdf plugin add php

3.php pluginの依存関係のインストール

asdfでは各言語のバージョンをinstallする際、言語ランタイムのソースコードからビルドをします。

macかつhomebrewだと下記のものをインストールするようですが

https://github.com/asdf-community/asdf-php/blob/248e9c6e2a7824510788f05e8cee848a62200b65/.github/workflows/workflow.yml#L52

今回はaptで必要なものをinstallしていきました

$ sudo apt install autoconf automake bison build-essential re2c pkg-config \
libfreetype6-dev libgd-dev gettext libicu-dev libkrb5-dev libc6-dev \
libedit-dev libjpeg8-dev libpng-dev libxml2-dev libzip-dev zlib1g-dev \
libcurl4-openssl-dev libonig-dev libpq-dev

4.phpインストール

$ asdf install php 8.2.6

5.asdfでのバージョン指定

asdfでのglobal設定を先程インストールしたバージョンにセットすると

$  asdf global php 8.2.6

下記のようにphpコマンドを呼びさせるようになります

$ php -v
PHP 8.2.6 (cli) (built: May 24 2023 20:02:06) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.6, Copyright (c) Zend Technologies

6.xdebugのインストール

xdebugが入っていないのでここまででセットアップしたasdf環境内のpeclからセットアップします

$ pecl install xdebug

上記でbuildが完了したらiniファイルでextensionの読み込みをする記述をします

iniがscanされる場所は下記になります(YOUR_USER_NAMEはubuntuのログインユーザ名)

$ php -i|grep 'additional .ini files'
Scan this dir for additional .ini files => /home/YOUR_USER_NAME/.asdf/installs/php/8.2.6/conf.d

下記のようにxdebug.iniなどを作成すると

/home/YOUR_USER_NAME/.asdf/installs/php/8.2.6/conf.d/xdebug.ini
zend_extension=/home/YOUR_USER_NAME/.asdf/installs/php/8.2.6/lib/php/extensions/no-debug-non-zts-20220829/xdebug.so

xdebugの読み込みが完了します

$ php -v
PHP 8.2.6 (cli) (built: May 24 2023 20:02:06) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.6, Copyright (c) Zend Technologies
    with Xdebug v3.2.1, Copyright (c) 2002-2023, by Derick Rethans

Discussion