Seite 1 von 1

Contenido Backend und Proxy

Verfasst: Mi 27. Aug 2008, 10:22
von ncf
Ich habe nun auch endlich den Schritt gewagt und wechsle von 4.6 auf 4.8.7

Dabei habe ich aber noch einige (konkret 2) Probleme, die ich auch nach intensivem Studium - auch von Forum und FAQ - nicht lösen kann.

Zum einen - nicht ganz so fundamental - funktioniert die Updatebenachrichtigung auf der Startseite des Backends nicht:
Update-Überprüfung kann nicht durchgeführt werden! Verbindung zu contenido.org fehlgeschlagen!
Zum anderen habe ich Probleme mit dem Linkchecker: Wenn ich den Linkchecker das erste Mal aufrufe, leiert der sich tot und endet irgendwann mit einem Skript-TimeOut. Ich habe nun in der php.ini testweise mehr Speicher und Ausführungszeit zugewiesen, danach bekomme ich auch eine Ausgabe des Linkcheckers, allerdings werden alle externen Links als fehlerhaft angezeigt - was nachweislich nicht so ist, da einige der Links auf dem selben Server gehostet werden. Klicke ich auf "Aktualisieren" - leiert sich das Skript wieder tot.

Nun ist nach vielem Grübeln, Suchen und Testen meine persönliche Vermutung, dass Contenido nicht mit dem Proxy kommunizieren kann/will?!

Für Hinweise, die zur Lösung beitragen, wäre ich unendlich dankbar!

Proxy und Linkchecker - Lösung

Verfasst: Di 2. Sep 2008, 07:16
von ncf
Da ich offenbar der Einzige mit dem geschilderten Problem "zwischengeschalteter Proxy" bin, habe ich also in mühevoller Kleinarbeit mein ganz persönliche Lösung gestrickt, die ich Euch natürlich nicht vorenthalten will.
Grundsätzlich arbeitet der Linkchecker mit fopen, das aber leider nicht über Proxies kommuniziert. Also Workaround mit fsockopen einbauen:

Dafür habe ich die Dateien

contenido/plugins/linkchecker/includes/include.linkchecker_tests.php
contenido/plugins/linkchecker/includes/config.plugin.php

angepasst.

contenido/plugins/linkchecker/includes/config.plugin.php

Die Parameter

Code: Alles auswählen

$cfg['linkchecker']['proxy_name'] = 'mein.proxy.de';
$cfg['linkchecker']['proxy_port'] = '8080';
ergänzt.

contenido/plugins/linkchecker/includes/include.linkchecker_tests.php

Am Anfang der Datei die Funktion

Code: Alles auswählen

function proxy_url($proxy_url,$proxy_name,$proxy_port) {
	$proxy_cont = '';

	$proxy_fp = fsockopen($proxy_name, $proxy_port);
	if (!$proxy_fp) {return false;}
	fputs($proxy_fp, "GET $proxy_url HTTP/1.0\r\nHost: $proxy_name\r\n\r\n");
	$proxy_cont .= fread($proxy_fp,4096);
	fclose($proxy_fp);
	$proxy_cont = substr($proxy_cont, strpos($proxy_cont,"\r\n\r\n")+4);
	return $proxy_cont;
}
ergänzt und dann die Zeile 169

Code: Alles auswählen

$iPing = @fopen($aSearchIDInfosNonID[$i]['url'], 'r');
ersetzen durch

Code: Alles auswählen

if($cfg['linkchecker']['proxy_name']) {
	$iPing = proxy_url($aSearchIDInfosNonID[$i]['url'], $cfg['linkchecker']['proxy_name'], $cfg['linkchecker']['proxy_port']);
} else {
	$iPing = fopen($aSearchIDInfosNonID[$i]['url'], 'r');
}
Et voilà: Schon funktioniert's.

Fehlt nur noch die Updatebenachrichtigung auf der Startseite. Hier ist das Problem dasselbe (Zeilen 482ff, Funktion getVendorHostFiles()), allerdings erhalte ich jetzt hier eine neue Fehlermeldung "Update-Überprüfung kann nicht durchgeführt werden! Hersteller-Version konnte nicht gelesen werden!", die ich erst einmal erforschen muss.