关于centos下面的php中soap的调用 及环境安装

在centos5.5的操作系统中,执行如下的命令:
/usr/bin/php -m|grep soap
/usr/bin/php:这个是php的执行文件,可能不同的服务器位置不同,但是没有关系,用whereis查询一下即可。
上面的命令执行了后,会检测是否启动soap,如果没有,那么不会返回任何结果,如果已经启动了的,那么会看到soap这个字符串。
我做的时候,用的是php5带的soap扩展来做的,centos自带的php的版本是5.1.6的,如果上面没有返回soap结果,那么需要用yum来进行安装:
yum install php-soap
这个命令将安装好soap,并且自动在/etc/php.d/目录下面生成一个soap.ini的文件,里面只有一行代码:
extension=soap.so
如果看到这一行了,那就说明已经安装上了,然后重新启动httpd:
/etc/init.d/httpd stop
/etc/init.d/httpd start
然后再执行/usr/bin/php -m|grep soap,确认是否已经启动了soap扩展,如果没有,那就先把这个东西弄好。
接下来需要做一个事情,那就是开通httpd访问网络的权限,如果不开通,将会有错误的,而错误是:
PHP Fatal error:  Uncaught SoapFault exception: [HTTP] Could not connect to host in /var/www/html/test/testcall_old.php:10/nStack trace:/n#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://222.210....', 'http://222.210....', 1, 0)/n#1 /var/www/html/test/testcall_old.php(10): SoapClient->__soapCall('createWebCall', Array)/n#2 {main}/n  thrown in /var/www/html/test/testcall_old.php on line 10
至于这个错误,折腾了我三天时间,查询了很多网站,很多文章,可是很多都没有结果,所以基本没有解决。
我调用web service的方式是采用no wsdl的方式,至于wsdl的方式,我没有测试。
从这里顺便说一下我愚蠢的3天所做的事情,这三天就是一直通过各种渠道搜索这个错误,也查看了error_log中的日志,但是除了我上面贴的这个错误,均没有。而代码里面,没有进行错误的输出,所以,在做php的soap的时候(不管是用的nusoap还是php自带的soap),那么记住一定要做错误输出,日志里面是没有记录这些错误的。获取soap的错误的代码:
$err=$client->getError()
这个错误有详细的信息。
我处理的过程中,输出的错误信息是:
soap_transport_http: Couldn't open socket connection to server *****,
Error (13): Permission denied
soapclient: Error: HTTP Error: Couldn't open socket connection to server ***** 
Error (13): Permission denied
(注:上面的*****表示我要调用的web service的地址,在此用星号表示了。)
然后我在谷歌上查到了这个错误,是因为linux操作系统中,默认设置了httpd不能访问网络。
那么需要运行命令:
setsebool -P httpd_can_network_connect 1
(其中参数的含义自己去查一下,我是水货,写这篇文章的时候,没有去查,不好意思。)
目的是允许httpd访问网络。
另外说一下,如果你不知道setsebool在什么位置,那么建议使用whereis查一下。
如果执行这个命令得到错误信息:
bash: setsebool: command not found
那么你需要直接找到这个命令的目录然后执行以下的命令:
./setsebool -P httpd_can_network_connect 1
执行了就ok了,然后重新启动httpd,一切ok。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值