php如果能编译就完美了,如何在编译好的PHP环境中安装PHP扩展模块-Dom扩展

php版本问题是一个很容易遗忘的问题,当我用git版本确信开发环境和生产环境程序没有任何区别,但线上环境却不出结果的时候,就应该想到是php版本的问题了。

php不同的版本4.x,5.1.x,5.2.x,5.3.x对特定的类和方法支持是不同,更可恶的如果是编译的php环境,后期业务开发需要的php扩展没有事先编译安装导致的功能失效。线上的生产环境是没办法直接调试的哦~

正如,我在用支付宝的第三方担保到帐支付接口时遇到的:

确认发货接口:确认发货后支付宝给出xml文档response,开发环境php版本为5.3.3,正常解析。

生产环境php版本为5.1.6,且为编译安装。

php 4.x之前是绑定domxml扩展的,该扩展不具备良好的面向对象规范,于是在php 5.0.0版本后被移出到pecl扩展库中,不再被php5内建支持。php 5.x采用新的dom扩展,详见php手册。

而编译安装的php就要看具体的编译配置了。

通过phpinfo()可以看到php是否真正的支持特定扩展,如果phpinfo()在php.ini中被禁止访问的话,可以采用php -i|grep 扩展名来查看,不过最可靠的方法是用class_exists(‘扩展名’)来检测。如果没有的话就要从新安装php扩展,yum或apt-get安装的php环境可以使用命令进行网络安装;如果php环境是编译安装的话,那么用phpize这个神器来安装php扩展吧。

=======================

fastcry.gif

我错了,dom在php5中是被内建支持的,并且没有pecl的dom扩展包,只有domxml,这个包我们刚才说过是php4.x时代的类库,不支持面向对象的。

现在的php环境找不到DOMDocument类,只可能是当时编译php的时候xml的扩展没有成功加载,程序中用到dom的类,只能报错,找不到DOMDocument类。

实在没办法了,我湿了下:

#yum install php-xml

靠,居然在当前的php版本上平滑升级了,php-xml扩展问题完美修复。

太纠结了,这个结果,我还是有点不明白。。。

慢慢理解吧===

注:php针对xml文档的操作有三种扩展可选,SimpleXML用来处理简单的xml文档,Dom扩展用来处理复杂的xml,这两种都是xml文档的树状解析方法(就是按照xml文档结构,将文档节点转换为结构化数组,一次性全部存入内容中),xmlreader扩展用来处理大型xml文档,采用流式解析方法(按照节点遍历的方法,将当前节点存入内存中进行实时处理)。

另外,php处理xml的方法还应该关注一下xslt和xpath。

未完,待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值