構成
---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 ]
- ./configure
- make (6. make test) soファイルをextension_dirに設置してphp.iniにextension=[name].soと記述
確認方法
localhostでアクセスしてphpinfoに読み込まれていることが確認できればOK