在Linux下,我们可以使用phpize工具来拓展PHP的功能,phpize是PHP源代码包中自带的一个脚本,它主要用于准备构建PHP扩展模块的环境。
(图片来源网络,侵删)安装phpize
我们需要确保phpize已经在你的系统上安装,如果没有,你可以使用以下命令进行安装:
sudo aptget install phpdev # Debian/Ubuntu sudo yum install phpdevel # CentOS/RHEL
下载PHP源码
你需要从PHP官网下载你想要拓展功能的PHP版本的源码,如果你想要为PHP 7.4.0版本添加新的功能,你可以使用wget命令下载源码:
wget http://uk2.php.net/get/php7.4.0.tar.gz/from/this/mirror O php7.4.0.tar.gz
解压源码并运行phpize
下载完成后,解压源码并进入目录,然后运行phpize:
tar xvf php7.4.0.tar.gz cd php7.4.0 ./configure make sudo make install
创建扩展模块
接下来,你可以开始编写你自己的PHP扩展模块了,你需要创建一个包含以下内容的C源文件:
#include "php_myext.h" /* True global resources no need for thread safety here */ static int le_myext; /* {{{ PHP_INI */ /* }}} */ /* {{{ php_myext_init_globals */ /* Uncomment this function if you have INI entries static void php_myext_init_globals(zend_myext_globals *myext_globals) { myext_globals>global_value = 0; /* ... */ } /* }}} */ /* {{{ PHP_MINIT_FUNCTION */ PHP_MINIT_FUNCTION(myext) { /* If you have INI entries, uncomment these lines REGISTER_INI_ENTRIES(); */ return SUCCESS; } /* }}} */ /* Remove if there's nothing to do at request start */ /* {{{ PHP_RINIT_FUNCTION */ PHP_RINIT_FUNCTION(myext) { #if defined(COMPILE_DL_MYEXT) && defined(ZTS) ZEND_TSRMLS_CACHE_UPDATE(); #endif return SUCCESS; } /* }}} */ /* Remove if there's nothing to do at request end */ /* {{{ PHP_RSHUTDOWN_FUNCTION */ PHP_RSHUTDOWN_FUNCTION(myext) { return SUCCESS; } /* }}} */ /* Remove if there's nothing to do at request start */ /* {{{ PHP_MINFO_FUNCTION */ PHP_MINFO_FUNCTION(myext) { php_info_print_table_start(); php_info_print_table_header(2, "myext support", "enabled"); php_info_print_table_row(2, "Version", "~"); php_info_print_table_row(2, "Author", "Your Name"); php_info_print_table_end(); /* Remove comments if you have statements to include DISPLAY_INI_ENTRIES(); */ } /* }}} */ /* Every uservisible function in PHP should document itself in the source */ /* See documentation.txt for documentation of the PHP functions */ /* {{{ proto string confirm_myext_compiled(string arg) Return a string to confirm that the module is compiled in */ PHP_FUNCTION(confirm_myext_compiled) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { RETURN_NULL(); } RETURN_STRING("Hello world", 1); } /* }}} */ /* The previous line is purposely censored by the preprocessor */
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。