Edited at

PHP extension追加方法


構成

---docker

|--docker-compose.yml
|--docker
| |--web
| |--Dockerfile
| |--php.ini
|
|--volumes
|--www
|--extensions(ビルドしたsoファイルを設置)
|--html
|--index.php
|--php-src(ダウンロードしたPHPソース)


docker-compose.yml

version: '3'

services:
web:
build: ./docker/web
ports:
- 80:80
volumes:
- ./docker/web/php.ini:/usr/local/etc/php/php.ini
- ./volumes/extensions:/usr/local/lib/php/extensions
- ./volumes/html:/var/www/html


volumes/www/html/index.php

<?php

// extension読み込み確認用
phpinfo();

// extension内の中身の確認用
$exts = array('ext_name1','ext_name2', ...);
foreach( $exts as $ext )
{
if( extension_loaded($ext) )
{
$funcs = get_extension_funcs($ext);
foreach( $funcs as $k => $v ) echo $k." : ".$v;
}
else
{
echo $ext." : NG";
}
}
?>


docker/web/Dockerfile

FROM php:7.3.10-apache

RUN apt-get update \
&& apt-get install vim git \
&& git clone https://github.com/php/php-src.git \
cd php-src/ \
git checkout -b PHP-7.3.10


docker/web/php.ini

extension_dir = /usr/local/lib/php/extensions

enable_dl = On
extension=[name].so


開発手順


任意の場所にPHPソースコードを設置

コンテナと同じPHPバージョンのソースを取得

cd /var/www/html

git clone https://github.com/php/php-src.git
git checkout -b PHP-7.3.10 origin/PHP-7.3.10


ひな形作成

cd php-src

1. php ext_skel.php --ext [name]

ext以下に[name]で指定したディレクトリが作成される

2. cd [name]

3. config.m4の編集して、コメント[dnl]を削除

PHP_ARG_WIDH

MAke sure that
[ --with ]


  1. ./configure

  2. make
    (6. make test)
    soファイルをextension_dirに設置してphp.iniにextension=[name].soと記述


確認方法

localhostでアクセスしてphpinfoに読み込まれていることが確認できればOK