docker-php扩展

生成扩展骨架

环境:docker-compose、php74

1.本地要有一份 php-src

git clone https://github.com/php/php-src.git 
cd php-src
git checkout PHP-7.4.5

2.\www\php-src\ext可以看到有一个 ext_skel.php 文件

docker-php扩展_第1张图片

3.通过ext_skel.php脚本创建了一个hello扩展,脚本目录在\www\php-src\ext目录下

php ext_skel.php --ext hello 

docker-php扩展_第2张图片

4.\www\php-src\ext\hello文件下的架构

-rw-r--r--   1 longshilin  staff   405 Feb 27 16:07 .gitignore
-rw-r--r--   1 longshilin  staff    11 Feb 27 16:07 CREDITS
-rw-r--r--   1 longshilin  staff  3231 Feb 27 16:07 config.m4
-rw-r--r--   1 longshilin  staff   204 Feb 27 16:07 config.w32
-rw-r--r--   1 longshilin  staff  3355 Feb 27 16:07 hello.c
-rw-r--r--   1 longshilin  staff  1425 Feb 27 16:07 php_hello.h
drwxr-xr-x   5 longshilin  staff   160 Feb 27 16:07 tests

5.编写代码扩展

编写helloword.c,可以通过PHP_FUNCTION定义函数

写一个测试方法,放到函数 PHP_FUNCTION(hello_test2) 后面:

/*新增函数*/
PHP_FUNCTION(hello)
{
     zend_string *strg;
     strg = strpprintf(0, "hello word");
     RETURN_STR(strg);
}

然后在 hello_functions[] 数组中增加我们新写的函数

PHP_FE(hetlo,NULL)

docker-php扩展_第3张图片

6.开始编译

/usr/local/bin/phpize
	//报错Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.
	//解决方式 apk add autoconf
./configure  --with-php-config=/usr/local/bin/php-config
	//报错 no acceptable C compiler found in $PATH
    //解决方式 apk add gcc
    //报错 C compiler cannot create executables
    //解决方式 apk add gcc g++
make && make install
    //报错 /bin/sh: make: not found
    //解决方式 apk add make
    

7.添加扩展目录

docker-php-ext-enable hello 
//启动扩展

8.测试

//新建文件a.php
<?php
echo hello();
?>

php a.php
#得到 hello word

你可能感兴趣的:(docker,php,容器)