Martin Linden: Includen einer Datei

Hallo,
ich habe mir für meine Homepage eine eigene Statistik geschrieben, die mir SQL arbeitet.
Jetzt muss ich natürlich noch die "statistik.php" genannte datei in all meinen Seiten einfügen.
Bisher habe ich es einfach per:
<?
include("statistik.php");
?>
gemacht. Allerdings hat dies den Nachteil, dass die Datei "statistik.php" in jedem ordner liegen muss.
Klar gäbe es die möglichkeit, dies auch über eine Pfadangabe zu machen, allerdings würde nichts mehr gehen, wenn die Homepage auf einen neuen Server umzieht.

Gibt es vielleicht auch andere Möglichkeiten, beispielsweise über eine direkte ansprache mir http://www.domain.de/statistik.php ?

Oder vielleicht <?
include("/statistik.php");
?>

Ich wäre euch sehr verbunden, wenn mir jemand da vielleicht einen Tipp geben kann.
Viele Grüße
Martin

  1. Moin!

    <?
    include("/statistik.php");
    ?>

    das klingt schon gut. wenn du nun das script statistik.php in dein root-verzeichnis legst, kannst du das immer von jeder ebene aus abrufen, denn der schrägstrich vor der datei führt zum root deines servers. wenn deine page auf einen anderen server umzieht, muss die statistik.php auch umziehen.

    tschüss ichen

    --
    Selfcode: sh:( fo:| br: n4:& ie:% mo:| mo:| de:] zu:) fl:| ss:| ls:[ js:|
    1. hallö nochmal,

      das klingt schon gut. wenn du nun das script statistik.php in dein root-verzeichnis legst, kannst du das immer von jeder ebene aus abrufen, denn der schrägstrich vor der datei führt zum root deines servers.

      eben! (dass ich immer so umständlich denke... tssss!)
      http://de.selfhtml.org/html/allgemein/referenzieren.htm#absolut

      grüße aus Leipzig
      willie

      --
      ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
      http://emmanuel.dammerer.at/selfcode.html
    2. Hallo,
      also wenn ich

      <?
      include("/statistik.php");
      ?>
      verwende, und in meinem obersten Verzeichnis die Statistik.php liegen habe, dann kommen folgende Fehlermeldungen:

      Warning: main(): open_basedir restriction in effect. File(/statistik.php) is not within the allowed path(s): (/www/htdocs/martinli/:/tmp:/usr/bin:/www/htdocs/xxxx:/bin:/usr/local/bin:/usr/share/php) in /www/htdocs/xxxx/chemie/index.php on line 3

      Warning: main(/statistik.php): failed to open stream: Operation not permitted in /www/htdocs/xxxx/chemie/index.php on line 3

      Warning: main(): Failed opening '/statistik.php' for inclusion (include_path='.:..') in /www/htdocs/xxxx/chemie/index.php on line 3

      Das scheint also so nicht ganz zu funktionieren.
      Gruß
      Martin

      1. Hello,

        Warning: main(): open_basedir restriction in effect. File(/statistik.php) is not within the allowed path(s): (/www/htdocs/martinli/:/tmp:/usr/bin:/www/htdocs/xxxx:/bin:/usr/local/bin:/usr/share/php) in /www/htdocs/xxxx/chemie/index.php on line 3

        Warning: main(/statistik.php): failed to open stream: Operation not permitted in /www/htdocs/xxxx/chemie/index.php on line 3

        Warning: main(): Failed opening '/statistik.php' for inclusion (include_path='.:..') in /www/htdocs/xxxx/chemie/index.php on line 3

        Das scheint also so nicht ganz zu funktionieren.

        Wie hast Du die Datei denn dorthin bekommen?

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo,
          ich hab die Datei per FTP in mein Hauptverzeichnig geladen.

          zudem habe ich gerade mal folgendes ausprobiert:

          <?

          include_path=".:/statistik.php"

          ?>
          da kommt Folgende Fehlermeldung:

          Parse error: parse error, unexpected '=' in /www/htdocs/xxxx/chemie/index.php on line 5

          da scheint also auch noch nicht alles korrekt zu sein?

          Gruß
          Martin

          1. hallö,

            include_path=".:/statistik.php"

            ..................^
            dort sollte '../' stehen

            grüße aus Leipzig
            willie

            --
            ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
            http://emmanuel.dammerer.at/selfcode.html
            1. Hallo,
              habe jetzt genau folgendes stehen:
              <?
              include_path="../statistik.php"
              ?>

              Und folgender Fehler wird ausgespuckt:

              Parse error: parse error, unexpected '=' in /www/htdocs/xxxx/chemie/index.php on line 5

              Also wird wohl etwas mit dem = falsch sein oder??

              Gruß
              Martin

              1. hallo Martin,

                habe jetzt genau folgendes stehen:
                <?
                include_path="../statistik.php"
                ?>

                uups! da hab ich zu schnell oder gar falsch ;-) gelesen und war noch bei 'include' ohne '_path'.

                Und folgender Fehler wird ausgespuckt:

                Parse error: parse error, unexpected '=' in /www/htdocs/xxxx/chemie/index.php on line 5

                ich bin nicht eben regelmäßig dabei, die grundeinstellungen zu ändern, aber: bezieht sich 'include_path' nicht besser auf einen _pfad_ als auf eine datei?

                zur notation: aktueller pfad + root '.:/' (UNIX)
                http://www.phpcenter.de/de-html-manual/configuration.html#ini.include-path

                grüße aus Leipzig
                willie

                --
                ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
                http://emmanuel.dammerer.at/selfcode.html
          2. Hello,

            zudem habe ich gerade mal folgendes ausprobiert:

            <?

            include_path=".:/statistik.php"

            ?>
            da kommt Folgende Fehlermeldung:

            Parse error: parse error, unexpected '=' in /www/htdocs/xxxx/chemie/index.php on line 5

            da scheint also auch noch nicht alles korrekt zu sein?

            Schau die bitte nochmals die Beschreibung zu ini_set() an. [link_:http://de2.php.net/manual/de/function.ini-set.php]

            Wenn Du im Script versuchst eine Konastante zu beschreiben, die zudem nicht deklariert ist, dann sollte Dir der Parser wohl auf die Finger klopfen.

            Beschreiben lassen sich nur Variableb, also bestenfalls "$include_path", aber das nützt Dir nichts, denn davon kennt PHP die Änderung noch lange nicht.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hallo,
              also wenn ich das richtig verstehe, dann ist das includen mit
              ini_set() nicht Umzugsfähig. Die würde mir dann nicht so gut gefallen, dass ich im Falle eines Umzuges meiner Homepage alle Seiten umschreiben muss.

              Gruß
              Martin

              1. Hello,

                also wenn ich das richtig verstehe, dann ist das includen mit
                ini_set() nicht Umzugsfähig. Die würde mir dann nicht so gut gefallen, dass ich im Falle eines Umzuges meiner Homepage alle Seiten umschreiben muss.

                Entschuldige, da komme ich nicht mehr mit.

                Wenn Du einen Pfad für ini_set() aufbaust, dann kann der

                • relativ sein
                • eine Variable oder Konstante beinhalten
                • sich auf die Document Root beziehen

                Wenn man auf fremden Servern arbeiet, muss man sich eben an die Gegebenheiten halten oder den Admin eben einfach erschießen und seinen Platz einnehmen.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. oder den Admin eben einfach erschießen und seinen Platz einnehmen.

                  eine Gute Idee,

                  also zumindest das mit seinen Platz einnehmen

                  Gruß
                  Martin

      2. hallö ins forum,

        Warning: main(): open_basedir restriction in effect. File(/statistik.php) is not within the allowed path(s): (/www/htdocs/martinli/:/tmp:/usr/bin:/www/htdocs/xxxx:/bin:/usr/local/bin:/usr/share/php) in /www/htdocs/xxxx/chemie/index.php on line 3
        Warning: main(/statistik.php): failed to open stream: Operation not permitted in /www/htdocs/xxxx/chemie/index.php on line 3
        Warning: main(): Failed opening '/statistik.php' for inclusion (include_path='.:..') in /www/htdocs/xxxx/chemie/index.php on line 3
        Das scheint also so nicht ganz zu funktionieren.

        wenn ich 'xxxx' mal mit deiner kundennummer gleichsetze, scheinst du direkt auf den kundenserver zugreifen zu wollen. und das geht dan wohl nicht so richtig. also doch besser relativ referenzieren?!
        http://www.php-einstieg.de/modules.php?name=News&file=article&sid=14

        grüße aus Leipzig
        willie

        --
        ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
        http://emmanuel.dammerer.at/selfcode.html
        1. wenn ich 'xxxx' mal mit deiner kundennummer gleichsetze, scheinst du direkt auf den kundenserver zugreifen zu wollen. und das geht dan wohl nicht so richtig. also doch besser relativ referenzieren?!

          Ja, du deutest das xxxx richtig.

          Allerdings muss ich gestehen, dass mir der Link nicht so sehr gut weitergeholfen hat.

          Gruß und trotzdem danke
          Martin

          1. hallö nochmal,

            Allerdings muss ich gestehen, dass mir der Link nicht so sehr gut weitergeholfen hat.

            hatte dort wegen der fehlermeldung nachgelesen. hier wird auch der zweck (und unterschiede zwischen 'safe_mode' und 'open_basedir') kurz erläutert http://www.php.net/manual/de/features.safe-mode.php
            man lernt ja nie aus ;-)

            grüße aus Leipzig
            willie

            --
            ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
            http://emmanuel.dammerer.at/selfcode.html
  2. hallo Martin,

    <?
    include("statistik.php");
    ?>
    Klar gäbe es die möglichkeit, dies auch über eine Pfadangabe zu machen, allerdings würde nichts mehr gehen, wenn die Homepage auf einen neuen Server umzieht.

    ...wie alle anderen dateien auch. oder?!

    include("/statistik.php");

    falls sie zb. im übergeordneten verzeichnis liegt mit
       include("../statistik.php"); #zur fehlersuche oder überhaupt auch mit 'require()'
    http://de.selfhtml.org/html/allgemein/referenzieren.htm#relativ

    grüße aus Leipzig
    willie

    --
    ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
    http://emmanuel.dammerer.at/selfcode.html
  3. Hello,

    wie wäre es denn mit "include_path"? Siehe phpinfo und ini_set() http://de2.php.net/manual/de/function.ini-set.php

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  4. Moin martin,
    Probiere doch mal das aus...
    So richtig umzugsfähig ist das allerdings auch nicht..

    <img src="statistik.php?referer=<?php echo $HTTP_SERVER_VARS['HTTP_REFERER']; ?>" width="0" height="0">

    TomIRL

    1. Hallo,
      Hey, das ist eine gute Idee, aber in meinem referer hab ich trotzdem noch 404 File not found, also ist das noch nicht 100%ig optimal,
      aber ich werd da mal ein wenig dran feilen.
      Gruß und herzlichen dank
      Martin

      1. Moin,

        Hey, das ist eine gute Idee, aber in meinem referer hab ich trotzdem noch 404 File not found, also ist das noch nicht 100%ig optimal,
        aber ich werd da mal ein wenig dran feilen.

        Probiere mal...
        $SERVER['HTTP_REFERER']

        TomIRL

        1. Hallo,
          Also das Problem, dass ich habe, ist, dass dadurch, dass kein Bild geladen wir mir der 404 in meine Statistik geschrieben wird.
          Aber ich glaube das lässt sich auch nicht ändern.

          Gruß
          Martin

          1. Hallo Martin,

            Also das Problem, dass ich habe, ist, dass dadurch, dass kein Bild geladen wir mir der 404 in meine Statistik geschrieben wird.

            dann muss deine statistik.php eben ein Bild ausgeben - ich glaube aber nicht, dass das daran liegt. Näheres kann ich aber ohne genauere Fehlermeldung (Eintrag aus error_log) und Code auch nicht sagen.

            Grüße aus Nürnberg
            Tobias

            1. Hallo Martin,

              Also das Problem, dass ich habe, ist, dass dadurch, dass kein Bild geladen wir mir der 404 in meine Statistik geschrieben wird.
              dann muss deine statistik.php eben ein Bild ausgeben - ich glaube aber nicht, dass das daran liegt. Näheres kann ich aber ohne genauere Fehlermeldung (Eintrag aus error_log) und Code auch nicht sagen.

              Das wollte ich auch anmerken.. der 404 kann eigentlich nicht aus der einbindung des Skriptes kommen.

              TomIRL

              1. Hallo,
                also ich denke, dass es so läuft:
                Das bild will geladen werden, aber die Datei Statistik.php ist kein bild. Also sagt das bild, ich laden dann mal anstelle des Bildes die 404.php und die 404.php schreibt mir dann, wie sie auch soll einen Eintrag in meine Log statistik.
                Und dieser eintragt sagt mir auch gleichzeitig, dass ich von der seite gekommen bin, auf der ich das ausprobiert habe.

                Aber es muss doch auch eine ander Möglichkeit geben php Skripte in einem anderen Sktipt zu laden.
                Zumindest eine Möglichkeit wo ich den Ort des Skriptes genau so angeben kann wie bei einer PHP datein.

                Gruß
                Martin

        2. Hallo,

          $SERVER['HTTP_REFERER']

          das Array, dass du vermutlich meinst, heißt $_SERVER (also mit Unterstrich) (siehe http://de2.php.net/manual/de/reserved.variables.php#reserved.variables.server).

          Grüße aus Nürnberg
          Tobias

          1. Hallo,

            $SERVER['HTTP_REFERER']
            das Array, dass du vermutlich meinst, heißt $_SERVER (also mit Unterstrich) (siehe http://de2.php.net/manual/de/reserved.variables.php#reserved.variables.server).

            Hm das meinte ich Tipfehler:
            Oh Gott verzeih mir, ich hab mich so auf den Referer konzentriert:
            $_SERVER['HTTP_REFERER']

  5. Hallo,

    Also mir wurde so etwas zugeworfen. In die .htaccess :

    $basedir für alle Dateien

    php_value auto_prepend_file /home/vhosts/xxxx/var/www/html/prepend.php

    Diese wird dann vor allen anderen Dateien automatisch ausgeführt. Dann in die prepend.php so was:

    $basepath = "/home/vhosts/xxxx/var/www/html";

    danach halt deine Statistik irgendwo rein z.N. in /home/vhosts/xxxx/var/www/html/scripts/statistic.php

    und du kannst sie immer per include($basepath."/scripts/statistic.php") includieren, egal wo sie ist.

    Grüße
    Jeena Paradies

    --
    Logo drucken welches sich auf einer dunklen Seite befindet
    http://jeenaparadies.de/weblog/2004/august/print-logo/
    Spammer jetzt beim Arbeitsamt
    http://jeenaparadies.de/artikel/arbeitsamt-spammer/