php的扩展有时候需要从php.ini中读取一些配置信息,在用ext_skel向导生成的扩展中已经包含这些,只是代码都是注释的。 今天调试都通过了,在这把过程写出来。
ext_skel生成的扩展框架有两个主要的程序文件 stone.c ,php_stone.h . 打开php_stone.h 找到
52 ZEND_BEGIN_MODULE_GLOBALS(stone) 53 long global_value; 54 char *global_string; 55 ZEND_END_MODULE_GLOBALS(stone)
去掉注释, 这里默认定义了两个 global_value,global_string. 往下看还能看到下面几行
#ifdef ZTS 70 #define STONE_G(v) TSRMG(stone_globals_id, zend_stone_globals *, v) 71 #else 72 #define STONE_G(v) (stone_globals.v) 73 #endif 74 75 #endif /* PHP_STONE_H */
通过这个宏我们就能访问全局变量, 比如这样STONE_G(globa_vale)。 然后在扩展的函数里添加下面这行,
php_printf("ini value: %d n", STONE_G(global_value));
然后调用我们的函数 如下 php -dstone.global_value=12 -r "stone_base64('w');" 就可以看到我们的修改的全局变量值 12 后面的-r 是运行参数中的代码。 stone_base64是我自己的函数
wd