Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Extension catalog and manager - Soap fault 'Not Found' #8404

Closed
Aybee opened this issue Jul 13, 2016 · 27 comments
Closed

Extension catalog and manager - Soap fault 'Not Found' #8404

Aybee opened this issue Jul 13, 2016 · 27 comments
Assignees

Comments

@Aybee
Copy link
Contributor

Aybee commented Jul 13, 2016

Wahrscheinlich seit dem Update der Website auf Contao 4 bekommen viele (nicht alle) User diesen Fehler (Bild)
extension_catalog_-contao_open_source_cms_3 5-_2016-07-13_11 20 01
Siehe auch im Forum https://community.contao.org/de/showthread.php?63188-Erweiterungen-quot-Not-found-quot

Ich habe es zum Beispiel beim Hoster webgo.de innerhalb eines Accounts, in einem anderen Account beim gleichen Hoster nicht.

Stellt man die Extension repository URL wieder auf http, dann geht es wieder. Seltsam, obwohl das ja eine Weiterleitung auf https ist. http://contao.org/services/repository.wsdl

Müsste schnell gefixed werden, weil jetzt viele Ihre Erweiterungen nicht mehr verwalten können, da dort der selbe Fehler kommt.

@discordier
Copy link
Contributor

discordier commented Jul 13, 2016

Kann ich bei mir nicht nachstellen.
Bei mir kommen saubere SOAP replies.

Koennt ihr mal bitte eine PHP Datei mit folgendem Inhalt auf euren Webspace hochladen und das Resultat hier posten?

<pre><?php

ini_set('display_errors', 1);
error_reporting(-1);

if (version_compare(PHP_VERSION, '5.4.0', '>=') && version_compare(PHP_VERSION, '5.4.4', '<')) {
    define('SOAP_COMPRESSION_FIXED', SOAP_COMPRESSION_DEFLATE);
} else {
    define('SOAP_COMPRESSION_FIXED', SOAP_COMPRESSION_GZIP);
}

$test = new \SoapClient(
    'https://contao.org/services/repository.wsdl',
    [
        'soap_version' => SOAP_1_2,
        'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_FIXED | 1,
        'trace' => 1
    ]
);
    echo 'PHP:' . PHP_VERSION . "\n";
    echo 'OpenSSL:' . OPENSSL_VERSION_TEXT . "\n\n";
    $test->getExtensionList(['first' => 0, 'limit' => 1]);
    echo "REQUEST:\n" . $test->__getLastRequestHeaders() . "\n" . $test->__getLastRequest();
    echo "\n\nRESPONSE:\n" . $test->__getLastResponseHeaders() . "\n" . $test->__getLastResponse();
?></pre>

@Aybee
Copy link
Contributor Author

Aybee commented Jul 13, 2016

<pre>PHP:5.6.20
OpenSSL:OpenSSL 1.0.1e 11 Feb 2013

REQUEST:
POST /services/service.php HTTP/1.1
Host: contao.org
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.6.20
Accept-Encoding: gzip, deflate
Content-Encoding: gzip
Content-Type: application/soap+xml; charset=utf-8; action=""
Content-Length: 286


<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://contao.org/repository" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body><ns1:getExtensionList env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><options xsi:type="ns1:extensionListArgs"><first xsi:type="xsd:int">0</first><limit xsi:type="xsd:int">1</limit></options></ns1:getExtensionList></env:Body></env:Envelope>


RESPONSE:
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 13 Jul 2016 10:19:18 GMT
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 1982
Connection: keep-alive

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://contao.org/repository" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:getExtensionListResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>extensions</rpc:result><extensions enc:itemType="ns1:extension" enc:arraySize="1" xsi:type="ns1:extensionArray"><item xsi:type="ns1:extension"><totrecs xsi:type="xsd:int">1897</totrecs><name xsi:type="xsd:string">1601_webeditor_theme</name><author xsi:type="xsd:string">1601.communication</author><authorname xsi:type="xsd:string">1601.communication gmbh</authorname><authorsite xsi:type="xsd:string">http://www.1601.com</authorsite><type xsi:type="xsd:string">commercial</type><category xsi:type="xsd:string">template</category><version xsi:type="xsd:int">10030019</version><build xsi:type="xsd:int">5</build><releasedate xsi:type="xsd:string">1338933600</releasedate><coreminversion xsi:type="xsd:int">20110009</coreminversion><coremaxversion xsi:type="xsd:int">20110059</coremaxversion><installs xsi:type="xsd:int">7</installs><updates xsi:type="xsd:int">4</updates><votes xsi:type="xsd:int">0</votes><functionality xsi:type="xsd:double">0</functionality><usability xsi:type="xsd:double">0</usability><quality xsi:type="xsd:double">0</quality><rating xsi:type="xsd:double">0</rating><language xsi:type="xsd:string">de</language><title xsi:type="xsd:string">1601.webeditor theme</title><teaser xsi:type="xsd:string">Verändert das Backend-Theme in das Hauseigene-Theme von 1601.communication</teaser><translatorname xsi:type="xsd:string">Andreas Döbeling</translatorname><translatorsite xsi:type="xsd:string">http://www.1601.com</translatorsite></item></extensions></ns1:getExtensionListResponse></env:Body></env:Envelope>
</pre>

@Aybee
Copy link
Contributor Author

Aybee commented Jul 13, 2016

Es funktioniert wieder mit https. Hast du was verändert?

@discordier
Copy link
Contributor

discordier commented Jul 13, 2016

Dann kommt doch eine saubere Response vom ER2.

Edit: nein, wir haben nichts geaendert.

@Aybee
Copy link
Contributor Author

Aybee commented Jul 13, 2016

Mmh, ich hatte heute morgen ein paar Stunden gedebugt, es hatte definitiv nie funktioniert.

@Aybee
Copy link
Contributor Author

Aybee commented Jul 13, 2016

Hier noch die immer wiederkehrenden Fehlermeldungen aus der error.log

[13-Jul-2016 11:18:58 Europe/Berlin] 
PHP Warning: Invalid argument supplied for foreach() in /home/www/_c35/system/modules/repository/templates/repository_catlist.html5 on line 32

[13-Jul-2016 11:18:58 Europe/Berlin] 
PHP Warning: Invalid argument supplied for foreach() in /home/www/_c35/system/modules/repository/templates/repository_catlist.html5 on line 68

https://github.com/contao/core/blob/master/system/modules/repository/templates/repository_catlist.html5#L32
https://github.com/contao/core/blob/master/system/modules/repository/templates/repository_catlist.html5#L68

@michaelgawlik
Copy link

funktioniert bei mir immer noch nicht mit https

und die Ausgabe des Scripts beschränkt sich hier darauf:
PHP:5.6.23-1~he.squeeze0 OpenSSL:OpenSSL 0.9.8o 01 Jun 2010

@discordier
Copy link
Contributor

discordier commented Jul 13, 2016

@dillinja: bitte nochmal probieren, ich hab das script um error reporting erweitert, obendrein solltest du hier bitte den kompletten plaintext pasten (CTRL+U in den meissten Browsern und Systemen / keine Ahnung wie es bei Mac ist).

//all: probiert auch mal bitte, ob es bei euch evtl. nur ein caching Problem ist.
Hierzu in der Datei: system/modules/repository/classes/RepositorySettings.php auf Zeile 16 folgendes aendern:

- define('REPOSITORY_SOAPCACHE', true);
+ define('REPOSITORY_SOAPCACHE', false);

@michaelgawlik
Copy link

das war leider die ganze Ausgabe und auch jetzt passiert nicht mehr.

<pre>PHP:5.6.23-1~he.squeeze0
OpenSSL:OpenSSL 0.9.8o 01 Jun 2010

Änderungen in der RepositorySettings.php auf 'false' bewirken dass das ER über https wieder läuft

@discordier
Copy link
Contributor

Dann hast du ein lokales Cache Problem auf dem Server.
Das ER2 sollte eigentlich nur via https angesprochen werden (und laeuft AFAIR auch nur noch auf https, alles andere sollte redirecten).

@fritzmg
Copy link
Contributor

fritzmg commented Jul 13, 2016

Wir haben das Problem auch auf zwei Webserver beobachtet. Wie würde man herausfinden können, warum der Cache zum Problem führt?

@discordier
Copy link
Contributor

Der Cache wird fyr euch zum Problem, weil er bei euch noch nicht abgelaufen ist und somit die neue WSDL nicht herunter geladen wird. 😀

Die Service URL hat sich mit dem Umbau auf C4.2 auf contao.org architekturbedingt geaendert (vormals zeigte sie auif ein Unterverzeichnis von system/modules, dies geht logischerweise nicht mehr da dort keine entry points erlaubt sind).

@fritzmg
Copy link
Contributor

fritzmg commented Jul 13, 2016

Ah ok - wie setzt man den SOAP Cache zurück?

@discordier
Copy link
Contributor

Loesche alle *wsdl* Dateien in deinem wsdl_cache_dir.

Wo dieses liegt: php -i | grep wsdl_cache_dir (meistens /tmp oder $HOME/tmp)

@fritzmg
Copy link
Contributor

fritzmg commented Jul 13, 2016

Naja, darauf haben wir bei diesen Servern allerdings leider keinen Zugriff.

@BugBuster1701
Copy link
Contributor

aber PHP doch, sonst könnte es dort nichts ablegen. Kleines PHP Script was alle wsdl daraus löscht schreiben sollte doch gehe.

@fritzmg
Copy link
Contributor

fritzmg commented Jul 13, 2016

Vermutlich ja. Könnte man in das Install Tool der nächsten Contao 3.5 Version geben (außer man will einfach abwarten, bis sich das Problem von selbst überall löst).

@Aybee
Copy link
Contributor Author

Aybee commented Jul 13, 2016

Scheint aber schon was mit den neuen Servereinstellungen von contao.org zu tun zu haben, denn wir hatten dieses Problem ja noch nie und jetzt auf einmal so viele, genau an dem Tag wo sich dort was geändert hat.

@BugBuster1701
Copy link
Contributor

Ja, weil sich die Service URL geändert hat in der wsdl. Und wenn noch die alte aus der wsdl im Cache genommen wird, funktioniert es eben nicht mehr.
Per Default ist die Cache Dauer 24 Stunden. (php.ini - soap.wsdl_cache_ttl)
Sollte sich also nach 24 Stunden von selbst lösen.

@fritzmg
Copy link
Contributor

fritzmg commented Jul 14, 2016

Könnte man da nicht auch am Contao Server einen Redirect einrichten?

@discordier
Copy link
Contributor

Das Problem war anscheinend wirklich nur euer cache. Dieser sollte nun yberall leer sein und das ER sauber wieder funktionieren.

@fritzmg einen redirect koennte man machen, jedoch haben wir dies leider versaeumt.
Da keiner von uns mehr das ER2 benutzt, haben wir die Problematik auch nicht erkannt.
Wir bitten dies zu entschuldigen.
Einen Redirect brauchen wir nun jedoch nicht mehr einrichten, da die URL nur in der WSDL hinterlegt ist und somit alle Dienste die sauber nach SOAP arbeiten keine Probleme mehr bereiten sollten.
Sollten wir, was unwahrscheinlich ist, das ER2 nochmal umziehen, werden wir dies jedoch sicherlich tun.

Ich denke wir koennen dieses Ticket somit schliessen.

@leofeyer please close.

@fritzmg
Copy link
Contributor

fritzmg commented Jul 14, 2016

Ja, nachdem der default wert bei 24h liegt, sollte sich das Problem nun eh überall erledigt haben 😄. Bei unseren Servern auf jeden Fall.

Sollte ein redirect nicht trotzdem eingerichtet werden, falls irgendein Hoster zufällig einen ungewöhnlich hohen Wert für soap.wsdl_cache_ttl benutzt?

@Aybee
Copy link
Contributor Author

Aybee commented Jul 14, 2016

Danke an alle.

@Aybee Aybee closed this as completed Jul 14, 2016
@fritzmg
Copy link
Contributor

fritzmg commented Oct 4, 2016

@discordier Gibt es irgendeinen Grund, warum der Redirect nicht trotzdem im nachhinein eingerichtet wurde? Im Forum tauchen immer noch User auf, die Probleme mit der Erweiterungsverwaltung haben auf grund des SOAP cache.

@discordier
Copy link
Contributor

Wie bitte koennen die nach MONATEN(!) immer noch einen falschen cache haben?

@leofeyer sollen wir doch noch einen redirect einbauen?

@fritzmg
Copy link
Contributor

fritzmg commented Oct 7, 2016

Wie bitte koennen die nach MONATEN(!) immer noch einen falschen cache haben?

Wie gesagt, evt. benutzen manche Hoster einen sehr hohen Wert für soap.wsdl_cache_ttl (warum auch immer). Oder der SOAP Cache ist buggy - unabhängig von der URL.

Alternativ könnte man den SoapClient auch komplett ohne Cache initialisieren:

$this->client = new SoapClient($wsdl, array(
    …,
    'cache_wsdl' => WSDL_CACHE_NONE
));

@discordier
Copy link
Contributor

Was dann den impact auf dem ER Server bei jeder PI im Backend auch mind. einen hit bringt, da bin ich dagegen.
Da drauf ist so schon zu viel los.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants