include array wird nicht ausgelesen

Also ich teste es direkt auf der Webseite, ich bin kein Fan von LOKAL, da gab es früher nur Probleme mit der online version. :)

Ich habe das jetzt nochmal mit den Konstanten probiert. Mit dem array hatte ich es vorhin auch schon so getestet.

Bei beiden scheint nichts richtig zu funktionieren.

Er gibt
HTML:
LINK1
aus


index.php
PHP:
<body>
    <div id="content">
    <?php
    $page = $_GET['page'];
    
    if(isset($page)) {
      define('DOMAIN', 'http://.....de');
      
      if($_GET['lang']=='ger') {$language='ger';} else {$language='eng';}
      #echo $language;
      
      if($language=='eng') {$longlang ='Deutsch'; $smalllang='ger';} else {$longlang= 'English'; $smalllang='eng';}
      
      include (''.DOMAIN.'/include/language/'.$language.'.php');
      
      /* DEBUGS */
      echo ''.DOMAIN.'/include/language/'.$language.'.php';
      echo LINK1;
      /* DEBUG ENDE */
      
      include_once('function/func_nav.php');

      echo '<div id="lang" style="position:fixed; top:0px; right:10px;"><a href="'.DOMAIN.'/maru/'.$smalllang.'/collection/" title="Seite auf '.$longlang.'"><p style="font-size:12px; color:#ccc;">'.$longlang.'</p></a></div>';
      
      include ($_SERVER['DOCUMENT_ROOT']. 'include/page/pi_'.$page.'.php');
  
    }
    else {
      
      include ($_SERVER['DOCUMENT_ROOT'].'include/page/pi_index.php');
    }
    ?>
    </div>
  </body>

wenn ich den ganzen ******, ohne include, direkt in die Datei schreibe, dann funktioniert es.
Nur der include funktioniert nicht, jedoch includiert er irgendwas, da es keine fehlermeldung gibt.
Wenn ich bob.php includieren möchte meldet er nen fehhler....

ICH RASTE GLEICH ;)

Vielen Dank ersteinmal für deine Hilfe und dein Interesse.

ich habe nun in der Hauptdatei, index.php einfach mal die Konstante DOMAIN im include entfernt, da ich sie dort nicht benötige.

So funktioniert es einwandfrei.

Wenn jemand mir zufällig erklären kann, warum dies so ist, darüber würde ich mich sehr freuen.

PHP:
include('include/language/'.$language.'.php');
      
      /* DEBUGS */
      echo $LNG['link1'];
      /* DEBUG ENDE */
 
Zuletzt bearbeitet von einem Moderator:
Ich würde den include nicht über eine URL machen, mach doch mal einen Unix-Pfad draus. Beispiel:

PHP:
define('ROOT', '/www/htdocs/w006b0f0/maru/version_1/');

include(ROOT . "include/language/{$language}.php");

Steht eigentlich irgendwas interessantes dazu im error.log des Webservers?
 
ja , so wäre es auch gegangen :D

keine Ahnung ob ich den error.log auslesen kann.

Es ist kein root- oder Vserver.

PHP:
define('ROOT', '/www/htdocs/w006b0f0/maru/version_1/');

include(ROOT . "include/language/{$language}.php");

sind die {} Klammern ein fehler bei dir, oder funktioniert das so auch?

EDIT: doffe Frage wenn man sie sich selber beantworten kann.

JA funktioniert . :)
 
Zuletzt bearbeitet von einem Moderator:
Also, der include über URL ist niemals zu empfehlen. Besser über einen lokalen Pfad. Denn include über URL setzt vorraus, das der php.ini Parameter allow_url_fopen aktiviert ist, was eine nicht so gute Idee ist.

Zu den Curly-Braces: Ja das funktioniert so, so kann man Variablen abgrenzen: http://www.dynamic-webpages.de/php/language.types.string.php#language.types.string.parsing

Nützlich ist das, wenn direkt hinter der Variable weiterer Text kommt.

EDIT: Meine Vermutung: Der include() über URL hat irgendwas inkludiert nur nicht das, was du eigentlich wolltest. Ein Blick in access.log oder error.log des Webservers hätte darüber Gewissheit geben können.

Noch ein Tipp: Teste es lokal bei dir. Man sollte seine Web-Apps so konzipieren, das sie auf jedem System laufen können, egal wo. Sonst hast du beim Migrieren auf ein anderes System wieder die gleichen Probleme. Eine große Hilfe ist in deinem Beispiel die Verwendung von $_SERVER['DOCUMENT_ROOT'] - nur so als Hint ;-)
 
Zuletzt bearbeitet:
Zurück