Bambel: & Server > ist doch schwachsinnig

Hallo,

soooo toll ist Apache jetzt wirklich nicht. Und ich überlege tatsächlich, ob ich nicht doch beim IIS beleibe. Denn meine (ca. 8000 Stück, 300MB Volumina) PHP-Daten spinnen auf Apache völlig rum.

Also, erst wollte ich PHP auf Apache als CGI-Teil laufen lassen. Ziemlich dumm, denn viele Teile wie so $_SERVER funktionieren gar net, die Adresse der Seite nennt er einem nämlich immer php.exe (mit pfad, also C:\php\php.exe...).
Na gut, dann eben PHP als API. Kein Problem, geht so schon wesentlich besser, aber unterm IIS wars dann doch noch besser ...

Zum Beispiel: $_SERVER["QUERY_STRING"] ist bei nicht-existierendem-query-string unterm IIS als CGI immer nicht-existierend gewesen, entsprechend gut funktioniert (beispielsweise) folgende Seite:

<?php
 $the_server = "http://" . $_SERVER["SERVER_NAME"] . "/";

if(!isset($_SERVER["QUERY_STRING"]))
   // include "librarys/winterdesign/splash.htm"; kein Weihnachtsdesign mehr :-)
   header("Location: portal.php");
 else if(preg_match ("/\d{1,3}/", $_SERVER["QUERY_STRING"]))
   header("Location: ".$the_server."server/webcode.php?code={$_SERVER["QUERY_STRING"]}");
 else if(isset($_GET["refer"]))
   header("Location: ".$the_server."server/refer.php?".$_GET["refer"]);
 else
 {
   function ref_to($where, $abs=false)
    {
      global $the_server;
      header("Location: " . ($abs ? "" : $the_server) . $where);
    }

switch(strtolower($_SERVER["QUERY_STRING"]))
   {
     case "start":
     case "portal":
     case "go":              ref_to("portal.php"); break;
     case "upload":          ref_to("server/upload.php"); break;
     case "download":        ref_to("server/download.php"); break;
     case "lanchat":
     case "chat":            ref_to("server/chat/"); break;
     case "components":      ref_to("server/components.php"); break;
     case "explore":
     case "explorer":        ref_to("explorer/"); break;
     case "help":
     case "hilfe":           ref_to("server/help/"); break;
     case "nachrichten":
     case "notizzettel":     ref_to("nachrichten/"); break;
     case "sideopener":
     case "seitenöffner":    ref_to("server/sideopener.php"); break;
     case "sideopenerconfigure":
                             ref_to("server/sideopener.php?action=configure"); break;
     case "news":            ref_to("server/news.php"); break;
     case "ftp":             ref_to("ftp://server", true); break;
     case "suche":
     case "search":          ref_to("suche/index.php"); break;
     default:
            ?>
             <html>
              <head>
               <title>server :: Fehler</title>
              </head>
              <body>
               <script language="JavaScript">
                <!--
                alert("Kein korrekter SveniWebserver-Startseitenaufruf.\nWert des Query-Strings: "<?=$_SERVER["QUERY_STRING"]; ?>"");
                location.href = "<? print "server/errors/php-error.php?site=%2Findex.php&error=Nicht+korrekte+Query-String-Angabe:+%22". urlencode($_SERVER["QUERY_STRING"]) ."+%22&ByWho=user&help=none"; ?>";
                -->
               </script>
               <noscript>
                 Keine korrekter Aufruf mithilfe des Query-Strings. Wert: "<?=$_SERVER["QUERY_STRING"]; ?>".
               </noscript>
              </body>
              </html>
            <?php
             break;
   }
 }
?>

wunderschön, wunderklein, wundersüß. Bliiger kleiner SCript, den ich mir als startdatei meines Servers gebaut habe. also, schön, wenn ich nun "server?download" eingebe (was dann wohl zu "http://server/?download" >> "http://server/index.php?download" wird), dann komme ich eben zum Download, etc. wunderschön, wunderbar. Ach ja, und "server" alleine begibt uns beim iis auf unser wunderschönes Portal (17KB hähähä), beim Apachen jedoch zu einer Fehlerseite ...

Also: Apache: Querystring = leer >> $_SERVER["QUERY_STRING"] == ""

toll. Das bedeutet: 8000 Dateien umbauen: schaffe ich doch bis morgen - bestimmt.

[bitte scrollen]

[bitte nicht mehr scrollen]

Das soll doch dann ein Scherz sein, oder ? ich hoffe.

vielen dank für's lesen,
und stellung nehmen,

Bambel, -Hannes- Bambel (<>b,jb)

  1. Moin!

    Was willst du jetzt eigentlich wissen?

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Nacht,

      <img src="/images/03.gif" border="0" alt="">

      besser wäre (siehe Syntax):
      Was willst du jetzt eigentlich wissen?
      ;=)

      Was ich wissen will meinst du ? Ganz einfach: Warum macht Apache so einen Schwachsinn, einen nichtexistierenden Query-string als leeren string zu übergeben ? PHP-nutzer quälen oder was ? Ich finde es lediglich etwas bescheuert.

      FRAGE: Gibt es da ABHILFE ???

      danke,

      BAmbel, HAnnes BAmbel

      1. Hallo Bambel,

        FRAGE: Gibt es da ABHILFE ???

        Nein. Benutze das naechste mal empty().

        Gruesse,
         CK

        --
        Q: God, root, what's the difference?
        A: God is merciful.
  2. Moin Bambel,
    Bleibe doch einfach in Deinem Thread:

    [pref:t=68082&m=390065]
    Vielleicht solltest Du ndann doch erst einmal die FAQ lesen:
    http://forum.de.selfhtml.org/faq/#Q-06c

    Viele Grüße TomIRL

    1. Tach TomIRL,

      Bleibe doch einfach in Deinem Thread:

      Es geht hier um was komplett anderes, siehe [pref:t=68089&m=390142] oder <img src="http://forum.de.selfhtml.org/?t=68089&m=390142" border="0" alt=""> { <- ;-) }

      BAmbel

      1. Tach Bambel...

        Bleibe doch einfach in Deinem Thread:
        Es geht hier um was komplett anderes,

        Worum geht es?
        Darum das Du nicht weist ob man den IIS oder den Indianer verwenden soll. Dein Frage hier resultiert aus der anderen.

        siehe [pref:t=68089&m=390142] oder <img src="http://forum.de.selfhtml.org/?t=68089&m=390142" border="0" alt=""> { <- ;-) }
        Dazu sag ich nur lies die FAQ:
        http://forum.de.selfhtml.org/faq/#Q-21

        Dein von Dir geschildertes Problem ist hausgemacht.
        Deine Skripte sind keineswegs Serverunbahängig programmiert.
        Die Schuld dem Server zu geben ist also der falsche Weg.
        Im Übrigen beziehen sämtlich mir bekannte PHP-Dokumentationen auf den Apachen und ich hatte bei der Umsetzung auf andere Webserver noch nie Probleme.
        Vielleicht liegt es ja auch am IIS?

        TomIRL

  3. Moin!

    soooo toll ist Apache jetzt wirklich nicht. Und ich überlege tatsächlich, ob ich nicht doch beim IIS beleibe. Denn meine (ca. 8000 Stück, 300MB Volumina) PHP-Daten spinnen auf Apache völlig rum.

    Du willst jetzt nicht ersthaft darüber meckern, dass der Apache Scheiße ist, nur weil du es nicht gebacken kriegst, den richtig zu konfigurieren.

    Und dich darauf verläßt, dass die von Server und PHP übermittelten Informationen in jeder Konfiguration identisch sind.

    wunderschön, wunderklein, wundersüß. Bliiger kleiner SCript, den ich mir als startdatei meines Servers gebaut habe.

    Naja, kann man auch anders sehen. Der Apache hat allein schon mit seinen internen Möglichkeiten reichlich Angebote, dieses Redirect ganz alleine hinzukriegen, vollkommen ohne PHP.

    Also: Apache: Querystring = leer >> $_SERVER["QUERY_STRING"] == ""

    toll. Das bedeutet: 8000 Dateien umbauen: schaffe ich doch bis morgen - bestimmt.

    Dein Pech. Wenn du serverübergreifende Skripte entwickeln wolltest, hättest du den Sinn von entsprechenden Abstraktionsebenen natürlich schon allein dadurch erkannt, dass du am Anfang ausprobiert hast, welche unterschiedlichen Werte existieren.

    Andernfalls mußt du eben damit rechnen, dass in anderen Umgebungen eben andere Verhältnisse herrschen können.

    - Sven Rautenberg

    --
    Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!