Ankündigung

Einklappen
Keine Ankündigung bisher.

Array steht nicht mehr zur Verfügung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array steht nicht mehr zur Verfügung

    Hallo,

    ich habe mehrere Dateien.
    Innerhalb der index.php rufe ich die Datei config.inc.php auf, in der ich den Array axtract definiere. Innerhalb der config.inc.php steht der Array auch noch voll zur Verfügung, aber will ich ihn danach wieder in der index.php nutzen bekomme ich Probleme.

    index.php:
    PHP-Code:
    <?php

    [...]

    define('UFO',TRUE);
    error_reporting(E_ALL);

    require(
    'inc\config.inc.php');

    echo 
    'extract 2: ';
    print_r($extract);
    echo 
    '
    '
    ;

    foreach(
    $extract as $key => $value){
        [...]
    }

    ?>
    config.inc.php:
    PHP-Code:
    <?php
    if(UFO){

       
    $extract = array(=> 'lang',=> 'login',=> 'pw');

       echo 
    'extract 1: ';
       
    print_r($extract);
       echo 
    '
    '
    ;

    }
    else{
       echo 
    'Die Datei darf nicht direkt aufgerufen werden!';
    }
    ?>
    Die Ausgabe des Scriptes:
    Code:
    extract 1: Array ( [1] => lang [2] => login [3] => pw )
    extract 2:
    
    Notice: Undefined variable: extract in D:\webroot\bgame\index.php on line 19
    
    Notice: Undefined variable: extract in D:\webroot\bgame\index.php on line 21
    Ich hab wohl mal wieder ein Brett vor'm Kopf
    Programming PHP


  • #2
    Funktioniert bei mir problemlos.
    Ist der zitierte Code aus inc/config.inc.php der komplette Inhalt der Datei?

    Kommentar


    • #3
      Komplett sieht der so aus:
      PHP-Code:
      <?php
      if(UFO){
          
      $modi = array(
              
      'login' => 'login',
              
      'impressum' => 'impressum',
              
      'register' => 'register',
              
      'index' => 'index'
          
      );

          
      $extract = array(=> 'lang',=> 'login',=> 'pw');

          echo 
      'extract: ';
          
      print_r($extract);
          echo 
      '
      '
      ;

          
      $cookie 'PHPSESSID';

          
      $usertab 'user';
      }
      else{
         echo 
      'Die Datei darf nicht direkt aufgerufen werden!';

      ?>
      Den Array $modi kann ich auch problemlos nutzen.
      Programming PHP

      Kommentar


      • #4
        wenn dann auch
        require('inc\config.inc.php');

        echo 'extract 2: ';
        print_r($extract);
        echo '
        ';
        vollständig ist (nichts zwischen require und echo/print_r), weiss ich auch nicht weiter.
        Wegschmeissen, neumachen

        Kommentar


        • #5
          Na, dann dank ich dir und mach mich mal an die Arbeit
          Programming PHP

          Kommentar


          • #6
            Hab die Lösung gefunden: Mit include() statt require() klappt es prima.
            Weiß vielleicht irgendjemand, warum?
            Programming PHP

            Kommentar


            • #7
              nein, include und require arbeiten auf die selbe Art und Weise.
              Das ist garantiert nicht der Grund gewesen.

              http://de2.php.net/manual/en/function.include.php
              Zitat von zend_language_Scanner.c
              The documentation below also applies to require(). The two constructs are identical in every way except how they handle failure.
              Kann man glauben, muss man aber nicht.
              Die Quellen liegen offen, man kann nachgucken.
              Es steckt der selbe Code dahinter.
              if (open_file_for_scanning(file_handle TSRMLS_CC)==FAILURE) {
              if (type==ZEND_REQUIRE) {
              zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
              zend_bailout();
              } else {
              zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
              }
              Anderer Fehlercode und bei require gibt's noch die große Klatsche hinterher. Aber der eigentliche Code zum Einlesen ist identisch. Der für die daran anschließende Verarbeitung eh.

              Kommentar


              • #8
                Hast recht, war wohl ein "Ich will mich Verlesen", der Fehler ist nämlich noch immer da.
                Ich werd mit wohl mal die Server-Einstellungen anschauen müssen, vielleicht liegt es daran, andere Variablen aus der config.inc.php sind auch nicht nutzbar.
                Programming PHP

                Kommentar


                • #9
                  Ist nur geraten, aber schlägt vielleicht http://www.php.net/manual/en/languag...bles.scope.php zu ?

                  Kommentar


                  • #10
                    Zumindest klappt es, wenn ich die Variablen in $GLOBALS hineinverfrachte.
                    Gibt es noch eine andere Möglichkeit, denn die Variablen immer in die $GLOBALS zu verfrachten und danach wieder zurückzuholen, ist bisweilen etwas nervig
                    Programming PHP

                    Kommentar


                    • #11
                      Wie gesagt, bei mir funktioniert es ohne Probleme. Einfach die beiden Codestückcken genommen, auf zwei Dateien verteilt, [...] entfernt, aufgerufen, Feld zweimal angezeigt bekommen, keine Warnungen, keine Fehler.
                      Irgendwas machst Du falsch. Und es ist nicht aus dem Code ersichtlich.
                      Vielleicht ist auch die php Version kaputt - halte ich aber für sehr, sehr unwahrscheinlich.

                      Kommentar


                      • #12
                        PHP ist frisch installiert, neuste Version. Daran dürfte es also nicht liegen, es muss aber irgendwo bei PHP liegen, auf einem anderen Server klappt es.
                        Ich schau mich mal ein bisschen bei den PHP.INI Optionen um, vielleicht werd ich da fündig.
                        Programming PHP

                        Kommentar


                        • #13
                          Da gibt es nichts entsprechendes.
                          Was sollte das auch sein? Der Parameter LöschedasFeldExtraxctAberBehalteModifyAmDateiende? Oder LöscheFeldZufälligAmEndeEinerDatei?

                          Kommentar


                          • #14
                            Ich hab jetzt nocheinmal alles überprüft und auch andere Dateien mal reingenommen.
                            Zwischen den ganzen Dateien gibt es keinerlei Bindung, abgesehen von $GLOBALS.
                            Ich hab also in den "requireten"-Dateien auch nicht die Variablen aus dem index.php zur Verfügung, sofern ich sie nicht explizit in $GLOBALS gesetzt habe und am Anfang in jeder "requireten"-Datei extract($GLOBALS); eingesetzt habe.

                            Wenn es dafür keinen PHP.INI-Wert gibt, bleibt mir wohl nichts anderes übrig, als PHP neu zu installieren.
                            Programming PHP

                            Kommentar


                            • #15
                              Das ist mehr als merkwürdig.

                              Kommentar

                              Lädt...
                              X