我遇到了一个有趣的 PHP/SOAP 错误,这让我很困惑。搜索后,我没有找到合理的解释,我很感激你的帮助。这是背景:
我有一个用 PHP/ CodeIgniter构建的站点,它使用 SOAP 通过 SSL 与不受我控制的第三方提供的后端系统(我们称它们为“X 公司”以保护无辜者)进行通信。本着良好 MVC 的精神,我将特定于与该数据源交互的代码放在单独的模型中 ( system/application/models/company_x.php
)。我一直在 Mac 上使用 MAMP 进行本地开发,通过测试和开发几乎一切都比较顺利;包括通过 SSL 调用 X 公司的 Web 服务。我可能应该提到他们的 Web 服务有 PHP 5 的 SOAP 不喜欢的奇怪的 WSDL。诸如所需参数之类的东西不存在。非常明确地调用 SOAP 方法有点奇怪,但我成功了,并且通过了测试。莫索,我可以发誓它在那里也有用过一段时间。
想象一下,当每次调用 SOAP Web 服务都开始产生如下错误时,我会感到惊讶:
遇到 PHP 错误 严重性:警告 消息:SoapClient::__doRequest() [soapclient.--dorequest]: 警告:URL fopen 访问 文件名:models/company_x.php 行号:86
除了服务器上模型文件的完整路径之外,错误日志没有提供更多信息。它在本地工作,我认为它以前在 Mosso 上工作过。也许 Mosso 更改了他们的设置,并禁用了 SOAP 或其他东西。再过phpinfo()
一会儿,他们就绰绰有余了。我想也许我的 Mac 更能容忍 SSL 证书。毕竟,这是一个 GoDaddy *.domain.com 证书,可能fopen
无法通过。我创建了一个测试文件以通过 SSL 进行连接,并将其放在 Mosso 上,它就可以工作了。
我想知道为什么fopen
访问突然成为 SOAP 的问题?莫索是什么让这突然变得困难?我需要覆盖某些php.ini
设置吗?会不会像经常出现这样的无益错误一样,完全不同?
更新:这是来自 phpinfo() 的配置命令:
'./configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-ming' '--with-mime-magic' '--with-sqlite=shared' '--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter' '--disable-json'
注意:我在下面的评论phpinfo()
报告说允许卷曲;奇怪的!