[CON-369] [4.8.13] Probleme mit Linkchecker

Gesperrt
homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

[CON-369] [4.8.13] Probleme mit Linkchecker

Beitrag von homtata » Mo 20. Sep 2010, 19:51

Hallo Community,

ich habe ca. 40 Contenido-Installationen laufen, die ich nach und nach auf 4.8.13 update (alle von 4.8.12). Bei einigen Installationen spinnt der Linkchecker, bei anderen nicht. Folgendes passiert:

Manchmal erhalte ich unterhalb der Navigation "Übersicht / Whitelist" die Fehlermeldung:

Code: Alles auswählen

in_array() [function.in-array]: Wrong datatype for second argument in [lokaler Link]/contenido/plugins/linkchecker/includes/include.linkchecker_tests.php on line 146
Meist ist es so, dass der Fehler bei einem Mandanten IMMER aufkreuzt, bei anderen hingegen nie.

Externe Links werden mir in einigen Projekten nicht angemeckert, bei anderen hingegen alle...

- dabei unterscheidet sich die externen Links im Aufbau nicht. Es sind auch keine angehängte Leerzeichen im Link oder ähnliches. Hier scheint es so zu sein, dass entweder ALLE externen Links angemeckert werden oder die Funktion funktionert.
- Der externe Link wird immer im TinyMCE eingetragen nach dem Muster "http://www.xyz.de". Target ist blank, dazu eine Beschreibung, dazu immer noch eine Javascript gestützte Version in Karteikarte 2, die aber in den verschiedenen Projekten auch IMMER gleich aufgebaut ist. Es sind immer die gleichen Felder angehakt und befüllt. Will heißen: im Frontend funktionieren die Links alle und sehen im Quellcode auch identisch aufgebaut aus. Einige Links sind sogar 100% identisch auf verschiedenen Seiten (z.B. der Credit auf meine eigene Homepage), und dennoch hab ich den Link mal als Fehler in der Liste, mal nicht!

Was grundsätzlich schief geht, sind externe Links auf ein anderes Contenidoprojekt.
- Dann scheint der Linkchecker das als internen Link zu verstehen, er schneidet eiskalt den echten URl vorne weg und tut so, als ginge es nur um den Teil hinter "/cms/"...
- Die verlinkte Domain liegt NICHT auf dem gleichen Server und bezieht sich auch nicht auf den gleichen Inhalt. Es ist schlicht und ergreifend nur ein anderes Contenido-Projekt.
- Beispiel: Meine Seite liegt auf http://www.abc.de, die Zielseite auf http://www.xyz.com. Linke ich von abc.de z.B. auf http://www.xyz.com/cms/front_content.php?idcatart=49, so taucht unter "Links auf Artikel" bei "Linkfehler" folgendes auf: "front_content.php?idcatart=47"

Spalte "Beschreibung"
- steht bei mir in allen Fällen in allen Projekten auf "unknown" (war auch bei Artikeln so, deren Kategorie offline war - ich habe dann die Artikel selbst noch offline gestellt, dann erschienen diese nicht mehr in der Liste.)

Gibts hier irgendwas zu beachten, oder kann jemand dieses Verhalten bestätigen?

LG
Zuletzt geändert von homtata am Mo 20. Sep 2010, 21:32, insgesamt 2-mal geändert.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: [4.8.13] Probleme mit Linkchecker

Beitrag von Oldperl » Mo 20. Sep 2010, 20:37

Hallo,
homtata hat geschrieben:

Code: Alles auswählen

in_array() [function.in-array]: Wrong datatype for second argument in [lokaler Link] on line 146
Wenn du sogar die Dateinamen entfernst ist es schon recht schwer den Fehler nachzuvollziehen. Es würde reichen wenn du Anstelle des "lokaler Link" nur deinen serverspezifischen Pfad ausXen würdest.
homtata hat geschrieben:- Externe Links werden mir in einigen Projekten nicht angemeckert, bei anderen hingegen alle, dabei unterscheidet sich der Aufbau des externen Links nicht. Es sind auch keine angehängte Leerzeichen im Link oder ähnliches. Hier scheint es so zu sein, dass entweder ALLE externen Links angemeckert werden oder die Funktion funktionert.
Beispiele, Beispiele, Beispiele...
homtata hat geschrieben:- Was grundsätzlich schief geht, sind externe Links auf ein anderes Contenidoprojekt. Dann scheint der Linkchecker das als internen Link zu verstehen, er schneidet eiskalt den echten URl vorne weg und tut so, als ginge es nur um den Teil hinter "/cms/"...
Liegt das andere Projekt unter der gleichen Domain oder wie sieht der Link dorthin aus. Also auch hier solltest du ein Beispiel angeben, sowohl für die aktuelle als auch für die verlinkte URL.

Ich verschieb das trotzdem mal nach Bugs, allein der 1. Fehler scheint schon ein Bug zu sein, muss man aber nochmals genau schauen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: [4.8.13] Probleme mit Linkchecker

Beitrag von xmurrix » Mo 20. Sep 2010, 20:42

Hallo homtata,

die Fehlermeldung/Warnung kannst du beheben, indem du die Datei contenido/plugins/linkchecker/includes/include.linkchecker_tests.php öffnest und in der Funktion checkLinks() das Vorkommen von

Code: Alles auswählen

    unset($aFind);
in

Code: Alles auswählen

    $aFind = array();
änderst. Es kann nähmlich passieren, dass die Variable $aFind, nachdem es mit unset() gelöscht wurde, danach nicht mehr wieder als eine Liste deklariert wird - Das führt aber zu einem Fehler...

Die Linkerkennung und die Überprüfung gefunderner Links ist im linkchecker-Plugin machmal vielleicht nicht so, wei man sich das wünscht. Hier könnte man das Plugin noch etwas erweitern und neue Ideen sind gerne willkommen.

Das Plugin erkennt Links, in denen front_content.php vorkommt, als interne Links und zwar auch nur solche, die folgendem Muster entsprechen:
- front_content.php?idart={id}
- front_content.php?idcat={id}
- front_content.php?idcatart={id}

Wenn du nun mehrere Mandanten hast, die sich gegenseitig Verlinken, dann wird der Link zu anderen Mandanten nicht als externer Link erkannt, sondern als ein interner Link. Und die Überprüfung der Links zu anderen Mandanten findet mit der Web-Adresse des aktuellen Mandanten statt.

Kurz gesagt, das linkcheker-Plugin ist nicht dafür konzipiert, 100% korrekte Ergebnisse auf einem Mehrmandantenystem zu liefern.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [4.8.13] Probleme mit Linkchecker

Beitrag von homtata » Mo 20. Sep 2010, 21:24

Hallo Ortwin,
hallo xmurrix,

danke für die ersten Hilfen - während die Nachricht von xmurrix eintrudelte, hab ich den Hauptbeitrag oben nochmal spezifiziert, weitere Ausführungen siehe also bitte dort!
Das "falsche" Anmeckern anderer Mandanten ist allerdings schon ein wenig hinderlich - zumal es sich ja nicht einmal um andere Mandanten in der gleichen Contenido-Installation handelt (also KEIN Mehrmandantensystem), sondern um willkürliche andere Contenido-Projekte auf anderen Servern, die einfach die gleiche URl-Struktur haben...

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [4.8.13] Probleme mit Linkchecker

Beitrag von homtata » Di 21. Sep 2010, 11:17

Noch eine kleine Merkwürdigkeit:

Ich setze Contenido-Projekte oft nicht neu auf, sondern kopiere ein bestehendes Projekt und arbeite es um - vor allem, da ich für einen Kunden Seiten erstelle, die sich sehr ähnlich sind in Layout und Aufbau.
Der Linkchecker meckert z.B. unter "Links auf Bilder und Dokumente" zum Teil Bildernamen an, die eindeutig nicht mehr im Artikel/Quellcode enthalten sind, sondern aus der Urversion stammen. Das Bild wurde längst ersetzt.

Das Bereinigen des Systems (Leeren von con_code, cache usw.) hat bisher keinen Erfolg gebracht - wo schaut der Linkchecker denn NOCH nach, dass er diese nicht mehr vorhandenen Bilderlinks findet und dann auf die Fehlerliste setzt?

EDIT:
Ein Teil der "Fehler" rührt daher, dass im Verlauf der Bearbeitung bei einigen Artikeln andere Templates mit anderen Containernummern zugewiesen wurden. Die dann nicht mehr verwendeten Containerinhalte werden in der DB weiterhin gespeichert, nicht gelöscht und offensichtlich beim Linkcheck trotzdem mit berücksichtigt...

LG

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [4.8.13] Probleme mit Linkchecker

Beitrag von frederic.schneider_4fb » Fr 24. Sep 2010, 18:05

Hallo,

es ist zwar schon etwas her, aber Bilder werden, wenn ich das richtig rekonstruiere, wie folgt überprüft:
  • Der Quelltext (Spalte "value" in der Tabelle "content") im Vorkommen von "action", "data", "href" oder "src" oder die Spalte "redirect_url" in der Tabelle "art_lang" werden nach entsprechenden Endungen (gif, jpg, jpeg, png, tif, psd, bmp) durchsucht und nur dann auch als Bild behandelt
  • Außerdem gibt es die Möglichkeit, dass ein Bild in der Tabelle "dbfs" gespeichert ist, in dem Fall beginnt der Link mit "dbfs.php?file=dbfs:/"
Ein anderes Szenario gibt es nicht.

Die Überprüfung findet übrigens bei lokalen Bildern lediglich im jeweiligen, für den Mandanten definierten Ordner statt. Bei dbfs-Links findet eine mandantenunabhängige Überprüfung statt. Die unterschiedliche Verwendung von Mandanten könnte man, zugegeben, noch besser berücksichtigen ;).

Die Cache des Linkcheckers kann übrigens folgendermaßen umgangen werden:
  • Linkchecker manuell im Browser aufrufen und den Parameter "live" in der URL auf 1 setzen
  • Einfach auf "aktualisieren" in der Subnavigation klicken
In diesem Fall wird eine neue Cache generiert. Die Cache liegt übrigens im Ordner "cms/cache" oberhalb des "contenido"-Ordners.
Frederic Schneider
Entwickler bei der four for business AG

dominik.ziegler
Beiträge: 437
Registriert: Do 19. Jun 2008, 09:09

Re: [CON-369] [4.8.13] Probleme mit Linkchecker

Beitrag von dominik.ziegler » Fr 26. Nov 2010, 17:22

Der von xmurrix vorgeschlagene Bugfix wurde in das System integriert.
Viele Grüße
Dominik

Gesperrt