ホストで謎のPHP SOAPエラーが発生しましたが、ローカルで複製できません

StackOverflow https://stackoverflow.com/questions/426747

  •  06-07-2019
  •  | 
  •  

質問

面倒なPHP / SOAPエラーに遭遇しました。検索した後、私はもっともらしい説明を見つけていません、そして、私はあなたの助けに感謝します。背景を次に示します。

PHP / CodeIgniter で構築されたサイトがあり、SOAPを使用してSSL経由でバックエンドシステムと通信します私の管理下にない第三者(無実の人を保護するために「会社X」と呼びましょう)によって提供されます。優れたMVCの精神で、別のモデル( system / application / models / company_x.php )にそのデータソースと対話するためのコードを配置しました。私はMacでMAMPを使用してローカルで開発を行ってきましたが、テストと開発を通じてほぼすべてが比較的スムーズに行われました。 SSLを介したCompany XのWebサービスの呼び出しを含みます。おそらく、彼らのWebサービスには、PHP 5のSOAPが好まない奇妙なWSDLがあったことを言及する必要があります。そこになかった必須パラメーターのようなもの。 SOAPメソッドを非常に明示的に呼び出すのは少し奇妙ですが、私はそれを実現し、テストを通じて機能しました。 Mosso のテストサイトにも展開しましたが、しばらくは機能すると誓ったかもしれません。そこにも。

SOAP Webサービスへのすべての呼び出しが次のようなエラーを生成し始めたときの驚きを想像してください:

    A PHP Error was encountered
    Severity: Warning
    Message: SoapClient::__doRequest() [soapclient.--dorequest]: 
    WARNING: URL fopen access
    Filename: models/company_x.php
    Line Number: 86

エラーログは、サーバー上のモデルファイルへのフルパス以外の情報を提供しませんでした。ローカルで動作し、以前Mossoで動作すると思っていました。たぶん、Mossoは設定を変更し、SOAPなどを無効にしました。少し後の phpinfo()には、十分以上のものがあります。多分私のMacはSSL証明書にもっと寛容だと思った。結局のところ、それはGoDaddy * .domain.com証明書であり、おそらく fopen が問題を抱えている可能性があります。 SSL経由で接続するためのテストファイルを作成し、Mossoに置いて動作しました。

なぜ fopen アクセスが突然SOAPの問題になるのでしょうか?これを突然難しくしているのは、モッソについての何ですか?いくつかの php.ini 設定をオーバーライドする必要がありますか?これは、このような役に立たないエラーが頻繁に発生するなど、まったく異なるものになる可能性がありますか?

更新: phpinfo()のconfigureコマンドは次のとおりです。

'./ 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 =共有、/ 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 ''-

役に立ちましたか?

解決 3

OK、この問題に関する少しの更新:エラーは不思議なことに私からの変更なしに消えました。黙って修正された、Mossoの奇妙な設定エラーがあったと仮定する必要があります。また、X社のセットアップに問題があった可能性もあります。これが最悪の修正IMOです!とにかくこれを見たすべての人に感謝します。

他のヒント

これがあるかもしれません http://us.php.net/ manual / en / filesystem.configuration.php#ini.allow-url-fopen

missing。

常にphpinfo()を使用して、マシン間の環境を視覚的に比較できます。

別の可能性( PHPドキュメントから):

注:セーフモードが有効な場合、PHPは、スクリプトが動作しているディレクトリに、実行中のスクリプトと同じUID(所有者)があるかどうかを確認します。

編集:うーん。PHPのコンパイルオプションにセーフモードが表示されないので、おそらくそうではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top