PHP Oops, an error occurred! Solr response does not appear to be valid JSON, please examine the raw response with getRawResponse() method

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
825
Hallo,

ich habe mein TYPO3 auf einen neuen Server umgezogen, indem der SOLR-Server ein eigener Server ist. Beide Server kommunizieren über eine interne IP.

Ich habe TYPO3 v7.6 und die entsprechenden benötigten SOLR-Versionen laufen.

Die Indexierung läuft ohne Probleme.
Jedoch erhalte ich im Frontend folgende Fehlermeldung:

Code:
Oops, an error occurred!
Solr response does not appear to be valid JSON, please examine the raw response with getRawResponse() method

Könnte das mit der internen IP zusammenhängen?
Eine externe IP gibt es für den SOLR-Server nicht.
 
Zuletzt bearbeitet:
Solr sendet kein valides JSON. Das ist dein Problem...

greetz
hroessler
 
Hat sich die IP / FQDN der Server geändert? Es könnte auch sein, das Solr zwar ein korrektes JSON versendet, dies aber nicht gelesen werden kann, weil z.B. das CORS (Cross-Origin Resource Sharing) nicht oder nicht korrekt eingestellt ist. Ansonsten natürlich auch testen, dass Solr auch ein Korrektes Json versendet
 
  • Gefällt mir
Reaktionen: Lawnmower
Vorher hat alles wunderbar funktioniert, als SOLR und TYPO3 auf einem Server lagen. Am validen JSON kann es demzufolge nicht liegen.
 
kannst du die fehlermeldung nicht deaktivieren wenn er ansonsten gut funktioniert? vielleicht hat sich was geaendert und deswegen musst du code auf neue version anpassen?
 
Btw dein Typo3 gibt dir ein Feedback => examine the raw response with getRawResponse() method

Also als nächstes würde ich die Stelle in deinem Typo3 Code suchen, welcher den Json request bearbeitet von deinem Solr Server. Die Resonsedate von Solr dann nicht mit getJsonResponse() (oder wie die Methode heist) öffnen sonder mit getRawResponse() ==> Print Console Out.

mit dem Response sollte man den Fehler finden können, jetzt ist es nur eine Suche nach der Nadel im Hauhaufen.
 
PHP:
Apache_Solr_Responseprototypeobject
   _response => Apache_Solr_HttpTransport_Responseprototypeobject
      _defaultStatusMessages => array(41 items)
      _statusCode => 400 (integer)
      _statusMessage => 'Bad Request' (11 chars)
      _mimeType => 'text/plain' (10 chars)
      _encoding => 'utf-8' (5 chars)
      _responseBody => '' (0 chars)

Habe mir mal das result ausgeben lassen.
Damit dürfte meine Vermutung mit der internen IP richtig sein?
 
Nein. Dem Rechner ist völlig egal, was da für eine IP steht, solange das Netzwerk dafür Sorge trägt, dass die Pakete ankommen. Und das tun sie, ihr redet auf Layer 4 erfolgreich miteinander - IP/Adressierungsprobleme wären Layer 3.
Typo3 scheint Blödsinn an den SOLR-Server zu schicken. Ich kenne aber beide Komponenten nicht, und kann daher auch nicht vernünftig raten.
 
Hm, seltsam. Warum hat das dann bisher auf dem anderen Server immer funktioniert?
 
Sag mir die Konfigurationen, welche die Kommunikation zwischen Typo3 und SOLR regeln, und eventuell kann ichs dir dann sagen.

Ohne neuen Input gibts von mir leider auch nicht mehr nützliche Infos.
 
wirelessy schrieb:
Typo3 scheint Blödsinn an den SOLR-Server zu schicken. Ich kenne aber beide Komponenten nicht, und kann daher auch nicht vernünftig raten.

yo, sagt das http400...
Auf nen neuen Server umgezogen.

Syntax/andere Versionierungen, sorry, das kann alles sein.
Klingt jetzt evtl. gemein, aber du solltest überlegen das Thema an jemand mit etwas mehr Expertise in dem Bereich abgeben. Deine Fragen zeigen, dass du grundlegendes nicht beherrschst.

Schumiel schrieb:
Hm, seltsam. Warum hat das dann bisher auf dem anderen Server immer funktioniert?

Anderer Server, andere Versionierungen, andere Konfiguration
 
Mein TypoScript:

Code:
# SOLR Grundeinstellungen
plugin.tx_solr.solr {
  scheme = http
  host = xxx.xxx.xxx.xxx # interne IP des SOLR-Server
  port = 8983
  path = /solr/test/
}
 
Darüber erhalte ich eine Ausgabe. Liegt damit dann nicht an der internen IP, wie von mir vermutet.

PHP:
$serializedResult = file_get_contents('http://xxx.xxx.xxx.xxx:8983/solr/test/select?q=test&wt=phps');
$result = unserialize($serializedResult);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($result);
Ergänzung ()

wirelessy schrieb:
Und vorher stand da einfach localhost drin?

ja
 
Dann wird wohl die Konfiguration des SOLR-Servers anders sein als vorher, wenn TYPO3 alles weiterhin gleich macht.
Aufgabe: Rauskriegen, wieso SOLR die Anfrage von Typo3 für einen Bad Request hält. Erwartet er evtl HTTPS statt HTTP?
Im Zweifelsfall den Traffic vorher mitschneiden, nachher mitschneiden und vergleichen. Oft gewinnt man da Erkenntnisse draus.
 
Der responseBody ist leer. Dadurch übergibt er kein JSON, sondern TEXT. Da muss ich ansetzen.
Ergänzung ()

Ich habe gerade den alten SOLR-Server dran geklemmt und es funktioniert alles.
 
Zuletzt bearbeitet:
Der ResponseBody ist leer, weil SOLR die Anfrage von Typo nicht passt. Da musst du ansetzen.

Ich bin hier raus, ich kenn die Materie nicht und du kommst bei den Ausführungen hier eh nicht mit.
 
Doch, ich verstehe eure Hilfestellungen schon. Ich bin dabei, genau das zu machen und weiter zu analysieren.
 
Zurück
Oben