Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Web-Installation (_installer) - Fehler bei Schritt 5

    Napsty

    • Neu im Forum
    • Beiträge: 12
    Hallo,

    Ich habe beim Topic mit der Ankündigung von 1.06 schon mal diesen Beitrag geschrieben - der wurde aber anscheinend ignoriert. Ausserdem passt meine Frage/mein Problem besser in dieses Sub-Forum.

    Ich habe Probleme bei einer Erstinstallation von 1.06 (also kein Upgrade), wobei ich nicht über den Schritt 5 hinweg komme.

    In Schritt 4 werden ja folgende POST Elemente weitergegeben:

    Code: PHP  [Auswählen]
    <input type="" name="HTTP_SERVER" value="http://www.meinedomain.ch" style="width:250px;" /><br />
    <input type="hidden" name="DIR_WS_CATALOG" value="/shop/" />

    Im Schritt 5 wird mir dann folgende Fehlermeldung angezeigt:

    Zitat
    URL oder Dateipfad ungültig

    Achtung! Sie haben eine ungültige URL oder einen ungültigen Dateipfad eingegeben!

    www.meinedomain.ch/shop/robots.txt [ERROR: 404]

    Bitte überprüfen Sie Ihre Einstellungen!

    Nur.... die URL korrekt und die robots.txt kann so aufgerufen werden. Das einzige, was auf einen Fehler theoretisch hinweist, könnte das fehlende http:// vor der URL sein. Wie man aber im Step4 sehen kann, wird http:// als value mitgeliefert.

    Im Step 5 wird dann die $url mit den POST Daten zusammengefügt:

    Code: PHP  [Auswählen]
    //Testpfad
    $url = $http_server . $_POST['DIR_WS_CATALOG'] . 'robots.txt';
     

    Dabei wird $http_server folgendermassen definiert:

    Code: PHP  [Auswählen]
    //BOF - web28 - 2010-06-14 - Fix possible end slash
    $http_server = rtrim($_POST['HTTP_SERVER'], '/');

    Wenn ich die komplette URL manuell zusammenfüge, sieht diese korrekt aus. Aber irgendwas scheint die Installation nicht zu mögen bzw. gibt einen ERROR 404 aus.
    Liegts vielleicht an der phpLinkCheck Funktion? Sonst eine Idee, woran es scheitern könnte?

    Server: Apache 2, mod_php, PHP 5.3.19

    Zusätzliche Info: Ich hatte auf demselben Server schon mal ein XTCommerce installiert und das läuft.

    Danke schon mal für Eure Hilfe.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=24162.0

    Guenter59

    • Viel Schreiber
    • Beiträge: 1.485
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #1 am: 16. Januar 2013, 15:22:55
    Hallo Napsty
    Einen Fehler kann ich so auch nicht erkennen.
    enentuell ist in der Zeile

    <input type="hidden" name="DIR_WS_CATALOG" value="/shop/" /> ein '/' zuviel, weil DIR_WS_CATALOG ist ja auch  '/'.

    Aber ich push Dich zumindest noch mal nach vorne durch meinen Beitrag, eventuell hat jemand einen Rat.
    Gruß
    Günter

    Napsty

    • Neu im Forum
    • Beiträge: 12
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #2 am: 16. Januar 2013, 15:36:14
    Hi Günter,
    Danke für Deine Zeit.
    Ja, das wär möglich, nur der Wert wird ja beim Installations-Schritt selbst ausgefüllt und kann nicht verändert werden...

    Zitat

    Webserver Root Verzeichnis
    /var/www/web130/html

    Der Pfad wird automatisch ermittelt!

    WWW Catalog Verzeichnis
    /shop/

    Der Pfad wird automatisch ermittelt!

    Hat jemand anders schon eine from scratch Installation von 1.06 gemacht?
    Überseh ich irgendwas?

    Guenter59

    • Viel Schreiber
    • Beiträge: 1.485
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #3 am: 16. Januar 2013, 16:07:47
    Hi Napsty
    Ja, der Pfad wird automatisch zusammengesetzt.
    Mußt Du bei der Installation nicht den Shop-Pfad angeben???( vielleicht ist der auch schon (vor) eingetragen )
    Ich hab schon lange nicht mehr installiert und noch nie in einen Unterordner.
    Gruß
    Günter

    Napsty

    • Neu im Forum
    • Beiträge: 12
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #4 am: 16. Januar 2013, 16:23:31
    Nein, ich kann nirgends den Pfad angeben, das sucht sich der _installer selbst zusammen. Die Werte stimmen auch, aber ich glaube das Problem liegt an der phpLinkCheck Funktion.

    Ich habe das mal versucht zu debuggen:

    Code: PHP  [Auswählen]
    <?php

    $post_http_server="http://www.meinedomain.ch";
    $post_dir_ws_catalog="/shop/";  


      //BOF - web28 - 2010-06-14 - Fix possible end slash
      $http_server = rtrim($post_http_server, '/');
      //EOF - web28 - 2010-06-14 - Fix possible end slash

      function phpLinkCheck($url, $r = FALSE) {
      /*  Purpose: Check HTTP Links  
       *  Usage:   $var = phpLinkCheck(absoluteURI)
       *           $var["Status-Code"] will return the HTTP status code
       *           (e.g. 200 or 404). In case of a 3xx code (redirection)
       *           $var["Location-Status-Code"] will contain the status
       *           code of the new loaction.                                                                                                                      
       *           See print_r($var) for the complete result                                                                                                      
       *                                                                                                                                                          
       *  Author:  Johannes Froemter <j-f@gmx.net>
       *  Date:    2001-04-14
       *  Version: 0.1 (currently requires PHP4)  
       */
     

      $url = trim($url);

      echo "DEBUG url nach trim: $url<br>";    

      //http oder https entfernen  
      $http = array('http://', 'https://');
      $urltest = str_replace($http,'',$url);  
      echo "DEBUG urltest nach str_replace: $urltest<br>";
      //Auf // testen
      if (strpos($urltest, '//') !== false)
        return false;
      //Auf falsches Installer Verzeichnis testen  
      if (strpos($urltest, DIR_MODIFIED_INSTALLER) !== false)  
        return false;

      if (!preg_match("=://=", $url))
        $url = "http://$url";  
      $url = parse_url($url);
      if (strtolower($url["scheme"]) != "http")
        return FALSE;
      if (!isset($url["port"]))
        $url["port"] = 80;
    echo $url["port"];  
      if (!isset($url["path"]))
        $url["path"] = "/";
    echo "<br>DEBUG url host port and url path:<br>";  
    echo $url["host"];
    echo $url["port"];
    echo $url["path"];
    echo "<br>";
      $fp = @fsockopen($url["host"], $url["port"], $errno, $errstr, 30);  
      if (!$fp) {  
        $http["Status-Code"] = '550';  // unknown host // FALSE;
        return $http;
      } else {
        $head = "";
        $httpRequest = "HEAD ". $url["path"] ." HTTP/1.1\r\n"
                      ."Host: ". $url["host"] ."\r\n"
                      ."Connection: close\r\n\r\n";
    echo "<br>DEBUG: httpRequest: $httpRequest<br>";
        fputs($fp, $httpRequest);

        while(!feof($fp)) {
          $head .= fgets($fp, 1024);
    echo "<br>DEBUG head: $head<br>";
        }
        fclose($fp);
        preg_match("=^(HTTP/\d+\.\d+) (\d{3}) ([^\r\n]*)=", $head, $matches);
        $http["Status-Line"] = $matches[0];
        $http["HTTP-Version"] = $matches[1];
        $http["Status-Code"] = $matches[2];
        $http["Reason-Phrase"] = $matches[3];
        if ($r) {
          return $http["Status-Code"];
        }
        $rclass = array("Informational", "Success",
                        "Redirection", "Client Error",
                        "Server Error");
        $http["Response-Class"] = $rclass[$http["Status-Code"][0] - 1];
        preg_match_all("=^(.+): ([^\r\n]*)=m", $head, $matches, PREG_SET_ORDER);
        foreach($matches as $line) {
          $http[$line[1]] = $line[2];
        }
        if ($http["Status-Code"][0] == 3) {
          $http["Location-Status-Code"] = phpLinkCheck($http["Location"], true);
        }
        return $http;
      }
    }

    //Testpfad
    $url = $http_server . $post_dir_ws_catalog . 'robots.txt';
    $link_status = phpLinkCheck($url);
    if ($link_status['Status-Code'] == 550) {
         $errmsg = 'HTTP Server: ' . $link_status['Parsed_URL']['host'] . ' unbekannt/unknown' . '   [ERROR: 550]';
    } else if ($link_status['Status-Code'] == 404) {
            $errmsg = $link_status['Parsed_URL']['host'] . $link_status['Parsed_URL']['path'] . '   [ERROR: 404]';
    }
    if ($link_status['Status-Code'] != 200) {
    //Fehleranzeige
    echo "DEBUG URL: $url<br>";
    echo $link_status['Status-Code'];
    }

    ?>
     

    Ergibt folgenden Output:

    Zitat
    DEBUG url nach trim: http://www.meinedomain.ch/shop/robots.txt
    DEBUG urltest nach str_replace: www.meinedomain.ch/shop/robots.txt
    80
    DEBUG url host port and url path:
    www.meinedomain.ch80/shop/robots.txt

    DEBUG: httpRequest: HEAD /shop/robots.txt HTTP/1.1 Host: www.meinedomain.ch Connection: close

    DEBUG head: HTTP/1.1 404 Not Found

    DEBUG head: HTTP/1.1 404 Not Found Date: Wed, 16 Jan 2013 15:09:43 GMT

    DEBUG head: HTTP/1.1 404 Not Found Date: Wed, 16 Jan 2013 15:09:43 GMT Server: Apache

    DEBUG head: HTTP/1.1 404 Not Found Date: Wed, 16 Jan 2013 15:09:43 GMT Server: Apache Vary: Accept-Encoding

    DEBUG head: HTTP/1.1 404 Not Found Date: Wed, 16 Jan 2013 15:09:43 GMT Server: Apache Vary: Accept-Encoding Connection: close

    DEBUG head: HTTP/1.1 404 Not Found Date: Wed, 16 Jan 2013 15:09:43 GMT Server: Apache Vary: Accept-Encoding Connection: close Content-Type: text/html; charset=iso-8859-1

    DEBUG head: HTTP/1.1 404 Not Found Date: Wed, 16 Jan 2013 15:09:43 GMT Server: Apache Vary: Accept-Encoding Connection: close Content-Type: text/html; charset=iso-8859-1

    DEBUG head: HTTP/1.1 404 Not Found Date: Wed, 16 Jan 2013 15:09:43 GMT Server: Apache Vary: Accept-Encoding Connection: close Content-Type: text/html; charset=iso-8859-1
    DEBUG URL: http://www.meinedomain.ch/shop/robots.txt
    404

    Es scheint so, als ob das Problem beim fsockopen oder kurz darauf beim httpRequest ist.

    In der Funktion selbst steht im Kommentar ausserdem folgendes:

    Code: PHP  [Auswählen]
       *  Author:  Johannes Froemter <j-f@gmx.net>
       *  Date:    2001-04-14  
       *  Version: 0.1 (currently requires PHP4)
     

    Vielleicht funktioniert diese Funktion mit PHP 5.3 nicht mehr richtig? Die Funktion ist fast 12 Jahre alt...

    Guenter59

    • Viel Schreiber
    • Beiträge: 1.485
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #5 am: 16. Januar 2013, 17:04:20
    Hi Napsty
    Beim download steht ab php 5.x bis 5.4.
    Irgendwie hat das einen Zusammenhang damit, daß Du es in einem Unterordner haben willst ( glaube ich ).
    Ich verstehe auch nicht so recht, wo das robots.txt herkommt.
    Gruß
    Günter

    Napsty

    • Neu im Forum
    • Beiträge: 12
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #6 am: 17. Januar 2013, 08:26:12
    Wie erwähnt läuft auf dem Server PHP 5.3 (5.3.19 um genau zu sein) als Apache mod.

    Also wenn sich der modified shop an XTCommerce anlehnt bzw. forkt, dann muss das mit dem Unterordner funktionieren. Hatte bereits mehrere Male ein XTCommerce in einen Unterordner installiert (example.com/shop).

    Die robots.txt ist Teil des modified shop Pakets (siehe modified-shop_1.06_install.zip).

    Ich habe auch die PHP Warnings und Errors Anzeige aktiviert. Leider wird nichts angezeigt. Ich gehe nach wie vor davon aus, dass die Funktion phpLinkCheck ein Problem macht. Es wäre gut, wenn sich ein DEV das mal anschauen könnte...

    Napsty

    • Neu im Forum
    • Beiträge: 12
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #7 am: 18. Januar 2013, 09:59:58
    Zur Information: Hab es zum laufen gebracht, indem ich den verantwortlichen Code von install_step5.php entfernt hab... Meiner Meinung nach ein Bug aber anscheinend interessiert sich kein DEV für dieses Forum.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #8 am: 18. Januar 2013, 12:19:19
    Hey, bleib mal ruhig.
    Schau' mal wieviel hier in diversen Threads gepostet wird seit die 1.06 draußen ist.
    Meinst du die Devs sitzen den ganzen Tag vor dem Forum um deine Probleme vorrangig zu lösen ?

    Wir haben schon einige Bugs gefunden und gefixt.
    Wenn du meinst, daß du einen Bug gefunden hast, kannst du einen ausformulierten und logisch den Fehler beschreibenden Post gerne einem Moderator melden (Button rechts unten im Post).

    Gruß,
    noRiddle

    Napsty

    • Neu im Forum
    • Beiträge: 12
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #9 am: 18. Januar 2013, 13:15:34
    Hi noRiddle,

    Vorab danke für Deine Antwort. Keine Bange, ich bin ruhig - mein Satz sollte lediglich einen konsternierten Fakt beschreiben. Du musst Dich nicht persönlich kritisiert fühlen, es war eine offene Kritik an das gesamte Team. Kritik muss man einfach ernst nehmen und darauf bauen -> einen Schritt näher am Perfektionismus  ;-)

    Ich mach selber auch OSS und weiss, dass es nicht leicht ist, sein Produkt bzw. sein Programm zu supporten, von dem her sollte das echt kein grosser Vorwurf sein. Ich hatte jedoch die Hoffnung, dass bei dem Wort "Fehler" relativ schnell ein Feedback kommen würde. Das hab ich von Guenter59 auch erhalten, und wahrscheinlich erweist sich seine Idee mit dem Untervzeichnis als richtig (die erwähnte Funktion ist vermutlich nicht auf Unterverzeichnisse ausgerichtet), aber wie mir scheint ist er kein DEV und konnte mit meinem Debugging auch nicht viel anfangen.

    Ich bin gerne bereit, weiteres Debugging oder eine weitere Neuinstallation durchzuführen. Mit diesem Topic will ich der Community ja helfen, sonst hätte ich die (temporäre) Lösung nicht gepostet.

    Einen Bug-Reporter wie Bugzilla habe ich kurz auf der Seite gesucht, aber nicht gefunden. Ausserdem konnte ich nicht ausschliessen, ob es nun ein Bug oder Anwenderfehler von mir war. Dass man einen Bug einem Moderator melden soll war mir nicht klar.

    Also - wie fahren wir mit diesem Fehler fort? Wie würdest Du das Phänomen beschreiben? Jetzt, da die Installation funktioniert, nachdem ich manuell den Code weggeschnippselt habe, gehe ich von einem Bug aus, insofern ein Unterverzeichnis für die Shop-Installation herhalten soll.

    thx,
    Napsty

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #10 am: 18. Januar 2013, 14:44:32
    Ich fühle mich nicht kritisiert, wie kommst du darauf ?

    Melde das einfach mal an web28.

    Gruß,
    noRiddle

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #11 am: 18. Januar 2013, 18:05:35
    Zitat
    URL oder Dateipfad ungültig

    Achtung! Sie haben eine ungültige URL oder einen ungültigen Dateipfad eingegeben!

    www.meinedomain.ch/shop/robots.txt [ERROR: 404]

    Bitte überprüfen Sie Ihre Einstellungen!

    Mit der Prüffunktion wird auf die korrekten Pfadangaben getestet! In 99% der Installationen funktioniert das auch. Ich hatte diesen Fehler noch nie.

    Mögliche Fehlerquellen:
    Domainzuweisung falsch konfiguriert
    htaccess Schutz für das Shopverzeichnis aktiv
    fsockopen nicht verfügbar
    Problem mit Port 80

    Gruss Web28

    Napsty

    • Neu im Forum
    • Beiträge: 12
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #12 am: 18. Januar 2013, 20:28:35
    Hi web28,

    Danke für Deine Zeit.

    Das habe ich ebenfalls zuerst gedacht, aber ich habe alles durchgecheckt:

    Domainzuweisung falsch konfiguriert -> Nein, ist korrekt
    htaccess Schutz für das Shopverzeichnis aktiv -> Nein, keine .htaccess, kein mod_rewrite oder ähnliches
    fsockopen nicht verfügbar -> fsckopen ist verfügbar (siehe Debug)
    Problem mit Port 80 -> ist offen und von intern zugreifbar

    Ich gehe davon aus, dass die Funktion ein Problem mit dem Unterverzeichnis hat, um die robots.txt zu testen. Wenn Du willst, installiere ich demnächst nochmals einen Shop from scratch (dieses Mal nicht in ein Unterverzeichnis), um die Unterschiede festzustellen. Falls sich das bewahrheitet, müsste man diesen Check aus dem Installer rausnehmen.

    Napsty

    • Neu im Forum
    • Beiträge: 12
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #13 am: 18. Januar 2013, 20:47:52
    Nochmal ich.
    Ich glaube, ich hab den Übeltäter gefunden: IPv6. Auf dem Server ist IPv6 verfügbar und anscheinend wird jede interne Port-Verbindung zuerst per IPv6 aufgemacht. Habs mit telnet nachgeprüft und den fsockopen nachsimuliert:

    Code: PHP  [Auswählen]
    # telnet www.meinedomain.ch 80
    Trying 2a01:4a2:111:4a3e::1...
    Connected to www.meinedomain.ch.
    Escape character is '^]'.
    GET /shop/robots.txt HTTP/1.1
    Host: www.meinedomain.ch

    HTTP/1.1 404 Not Found
     

    Der Apache horcht zwar auf Port 80 unter IPv6 - jedoch nur der default Server. Die vhosts sind noch nicht unter IPv6 erreichbar. Ich nehme nun an, dass fsockopen die Verbindung ähnlich wie telnet ebenfalls zuerst auf IPv6 macht und daher den vhost und somit die Datei nicht aufrufen kann, was in einem 404 resultiert.

    Ich würde somit sagen, das Problem liegt eher an der Serverconfig als am Code. Jedoch wäre es vielleicht doch vorteilhaft, wenn die Verfügbarkeit der robots.txt anders getestet wird, z.B. über den absoluten Pfad?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: Web-Installation (_installer) - Fehler bei Schritt 5
    Antwort #14 am: 18. Januar 2013, 21:24:12
    Interessant..., IPv6 wird auch bald ein Thema...
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
    3 Antworten
    3241 Aufrufe
    23. Juli 2010, 15:53:56 von Tomcraft
    21 Antworten
    9737 Aufrufe
    18. Juli 2009, 18:09:31 von Anonym
    4 Antworten
    2204 Aufrufe
    21. Januar 2018, 20:52:45 von xeron
               
    anything