Ich habe einen mysteriösen PHP SOAP-Fehler auf meinem Host, kann aber nicht lokal duplizieren

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

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe auf einem interessanten PHP / SOAP-Fehler führen, die mich zunichte gemacht hat. Ich habe nicht eine plausible Erklärung, und ich würde schätzen Ihre Hilfe nach der Suche gefunden. Hier ist der Hintergrund:

Ich habe eine Seite in PHP gebaut / CodeIgniter die SOAP verwendet über SSL mit einem Back-End-System zu kommunizieren von einem dritten zur Verfügung gestellt (nennen wir sie „Firma X“, um die unschuldigen zu schützen) nicht in meiner Kontrolle. Im Geist der guten MVC, habe ich den Code spezifisch mit dieser Datenquelle in einem separaten Modell zu interagieren (system/application/models/company_x.php). Ich habe vor Ort entwickelt auf meinem Mac mit MAMP, und fast alles war relativ glatt durch Tests und Entwicklung; einschließlich Unternehmen X Web-Service über SSL aufrufen. Ich sollte wohl erwähnen, dass ihre Web-Service hatte seltsame WSDL, die PHP 5 SOAP nicht gefallen hat. Dinge wie erforderlichen Parameter, die nicht da waren. Es ist ein wenig seltsam gewesen explizit sehr SOAP Methoden zu nennen, aber ich habe es los und es funktionierte durch Tests. Ich entfalten es sogar zu einer Teststelle unter Mosso , und ich hätte schwören können, dass sie für eine Zeit aufgearbeitet auch da.

meine Überraschung vorstellen, wenn jeder Anruf an den SOAP-Web-Dienst starten Herstellung Fehler wie folgt aus:

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

Die Fehlerprotokolle gab keine weiteren Informationen außer dem vollständigen Pfad zu der Modell-Datei auf dem Server. Es funktioniert lokal, und ich dachte, es vor auf Mosso gearbeitet. Vielleicht verändert Mosso ihre Einstellungen und deaktiviert SOAP oder so etwas. Ein wenig phpinfo() später, und sie haben mehr als genug. Ich dachte, dass vielleicht mein Mac toleranter des SSL-Zertifikats ist. Immerhin ist es eine GoDaddy * .domain.com cert, vielleicht ist fopen Probleme, durch zu bekommen. Ich peitschte eine Testdatei auf über SSL zu verbinden, und legte sie auf Mosso und es hat funktioniert.

Ich frage mich, warum ist fopen Zugang plötzlich ein Problem für SOAP? Was ist es über Mosso, die diese schwierige plötzlich macht? Muss ich etwas php.ini Einstellung außer Kraft zu setzen? Könnte es sein, wie wie dies so oft mit wenig hilfreich Fehler ist, etwas ganz anderes?

Update: ist hier der configure-Befehl von 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'

Hinweis : Mein Kommentar unter diesem phpinfo() berichtet, dass furl erlaubt ist; seltsam!

War es hilfreich?

Lösung 3

OK, ein kleines Update auf diesem Problem: der Fehler auf mysteriösen verschwand von mir ohne Änderung. Ich muss davon ausgehen, dass es eine ungerade Konfigurationsfehler war auf Mosso, die still wurde behoben. Es ist auch aus der Ferne möglich, dass es ein Problem mit Unternehmen X-Setup war. Das ist die schlimmste Art von fix IMO! Trotzdem danke an alle, die auf diese sah.

Andere Tipps

Unter Umständen müssen Sie diese http://us.php.net/ manual / en / filesystem.configuration.php # ini.allow-url-fopen

fehlt.

Denken Sie daran, immer phpinfo (), um visuell zu vergleichen, die Umwelt zwischen Maschinen verwenden können.

Eine weitere Möglichkeit (von der PHP-Dokumentation ):

Hinweis: Wenn Sie die abgesicherte Modus ist, überprüft PHP aktiviert, ob das Verzeichnis in dem das Skript hat die gleiche UID arbeitet (Eigentümer) haben wie das Skript, das ausgeführt wird
.

EDIT:. Hmm .. ich weiß nicht abgesicherten Modus in Ihrem PHP siehe Optionen kompilieren, so ist es wahrscheinlich nicht, dass

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top