关于centos下面的php中soap的调用

本文介绍了在CentOS 5.5系统中配置PHP SOAP扩展的过程及解决HTTPd访问网络权限问题的方法。作者分享了安装扩展、重启服务及设置安全策略的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人对linux的东西不是很了解,都是边做边看,再加上身边搞linux的人的指点。开始只是简单的部署到服务器上,以为只要部署过去,就可以使用了,后来才发现,需要安装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。
祝遇到这个问题的同仁好运。

### 安装和配置 PHP #### 硬件需求 对于安装PHP的要求并不严格依赖于特定的硬件条件,但为了确保良好的性能和服务稳定性,建议服务器具备至少1GB RAM以及足够的磁盘空间来存储应用程序及其日志文件[^1]。 #### 使用官方源安装 PHP 7.3 版本 由于当前环境基于 CentOS 7 平台,在此推荐通过 yum 命令行工具直接从 Remi 或者 Webtatic 这样的第三方仓库获取并安装所需版本的 PHP 及其扩展模块。这里以Remi为例: ```bash yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php73 yum update yum install php php-common php-opcache php-mysqlnd php-gd php-xml php-mbstring ``` 上述命令会自动下载并设置好所有必要的组件,包括但不限于CLI解析器、核心库以及其他常用的插件集[^2]。 #### 编译安装自定义版本 (如 PHP 7.4) 如果需要更精确控制所使用的具体特性,则可以选择自行编译最新稳定版源码包。下面给出了一套完整的流程用于指导用户完成这项工作: 先准备开发工具链及其他前置依赖项: ```bash yum groupinstall "Development Tools" yum install libxml2-devel openssl-devel bzip2-devel curl-devel libjpeg-turbo-devel libpng-devel freetype-devel gmp-devel readline-devel sqlite-devel oniguruma-devel re2c ``` 接着解压已下载好的 tarball 文件至指定目录下,并执行`./configure`脚本来初始化构建参数;之后运行make指令开始实际编译过程直至结束。 最后一步就是按照给定路径将生成的目标二进制文件拷贝到系统默认位置以便全局调用[^3]: ```bash tar xf php-x.x.x.tar.gz && cd php-x.x.x/ ./buildconf --force ./configure \ --prefix=/usr/local/php \ --with-config-file-path=/etc \ --enable-fpm \ --with-curl \ --with-zlib-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-zlib-dir \ --with-freetype-dir \ --with-libdir=lib64 \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-readline \ --with-recode=no \ --with-pspell=yes \ --with-enchant=yes \ --with-sqlite3 \ --with-onig \ --disable-debug \ --disable-rpath \ --without-pear \ --enable-inline-optimization \ --enable-shared \ --enable-shmop \ --enable-exif \ --enable-calendar \ --enable-wddx \ --enable-soap \ --enable-ftp \ --enable-mbregex \ --enable-mbstring=all \ --enable-intl \ --enable-pcntl \ --enable-sockets \ --enable-posix \ --with-openssl \ --with-mhash \ --with-mcrypt \ --with-password-argon2 \ --with-webp-dir \ --with-xsl \ --with-tsrm-pthreads \ --with-unixODBC=shared,/usr \ --with-imap=shared \ --with-imap-ssl \ --with-kerberos \ --with-gettext=shared \ --with-snmp=shared,/usr \ --with-tidy=shared \ --with-db4=shared,/usr \ --with-gdbm=shared,/usr \ --with-litespeed \ --enable-opcache make -j$(nproc) sudo make install ``` #### 配置 `php-fpm` 一旦成功部署完毕,还需要进一步调整FastCGI进程管理器(`php-fpm`)的相关设定才能让Web服务正常运作起来。这通常涉及到编辑位于 `/etc/php.ini`, `/etc/php-fpm.conf` 和 `/etc/php-fpm.d/www.conf` 的几个主要配置文档中的选项值: ```ini ; 修改 www.conf 中监听地址为 unix socket 方式提高效率 listen = /var/run/php-fpm.sock ; 设置合适的权限组合防止安全风险 listen.owner = nginx listen.group = nginx listen.mode = 0660 ; 调整最大子进程数量适应并发请求量级 pm.max_children = 50 ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值