LoginSignup
0
0

More than 3 years have passed since last update.

PHP extension追加方法

Last updated at Posted at 2019-10-14

構成

---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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0