只是开发PHP扩展这东东貌似属于C语言模块的东西吧
不明白为什么要用扩展来读配置文件,PHP中也可以啊

解决方案 »

  1.   


    主要是考虑算法封装和数据保密,另外是效率,毕竟php是脚本语言。
      

  2.   

    有很多现成函数,建议你去看看php手册里的“PHP Options&Information”
      

  3.   

    谢谢楼上的朋友,我是希望在扩展中直接读取配置项,然后做相关处理,get_cfg_var可以取到ini配置项,不过虽然不能完全满足我的要求,但可暂用,谢谢了。
      

  4.   

    在luojxun的提示下,我研究PHP的get_cfg_var源代码,问题基本解决,似乎函数要返回这种字符串配置变量时,后面要加1标记(复制副本返回)RETURN_STRING(value, 1);,现在可以读取到字符串配置变量了,不过还有点小问题,退出apache出现异常,具体问题,明天继续摸索。过两天就把这个帖子结了。
    再次感谢luojxun兄弟!
      

  5.   

    并非是返回字符串配置变量才需要以复制的方式返回。大部分情况下你都需要RETURN_STRING(xxxx,1);除非你的xxxx是自己emalloc的。其实很多情况下都会自己构造一个zval,再返回。另外之所以String需要拷贝,而Long/Int不需要,是因为String是char *,它的变量是个指针,而Long/Int是以值来传递的。
      

  6.   


    谢谢surfchen提醒,我对PHP扩展是刚接触,很多机关陷阱不清楚,昨天的退出异常也暂时解决了,是传递给ZEND_INIT_MODULE_GLOBALS的拆构函数好像要指定为NULL(我指定一个不做任何操作的拆构函数也不行),不过这个应该不是最终原因,具体原因等有时间后再来深入学习。
      

  7.   

    其实你不应该来CSDN的,这里没几个人开发过扩展。我在pecl也有一两个项目(http://pecl.php.net/package/funcall  http://pecl.php.net/package/qqwry),对扩展开发还算了解,以后有什么想法可以给我发邮件(surfchen在gmail点com)讨论。另外我建议你加入php的一些邮件列表,http://www.php.net/mailing-lists.php