Server übernimmt definierte Variablen nicht

akoehler

New Member
Hallo,

seit ich auf einen neuen Server umgezogen bin, werden in manchen Scripts nicht alle definierten Variablen übernommen.

Beispiel: ich habe das Script phpYellow laufen, in dem die Sprache des Browsers ausgelesen wird:

PHP:
$langTab = array (
      "de"=>"Deutsch",
      "en"=>"English",
      "es"=>"Español",
      "fr"=>"Français",
      "it"=>"Italiano",
      "pt"=>"Português brazilian",
      "ru"=>"Russian"
      ) ;
   
// end LANGUAGES DEFINITION section

// do NOT change the rest of LOCALE MANAGEMENT underneath

   //if no choice was previously done by the visitor, OR he refused the cookie
   if (!isset($langSelected)):
      //retrieve browser language
      $BrowserLangs = explode(",", $HTTP_ACCEPT_LANGUAGE); //might not work if you're not on an Apache server
      $BrowserLang1 = $BrowserLangs[0] ;     // now we know the browser's favourite language 
      //now let's remove subtags if any
      $BrowserLang1 = explode("-", $BrowserLang1); 
      $BrowserLang1 = $BrowserLang1[0] ;
      //and finally see if it's know to our LANGUAGES DEFINITION section
      $langSelected = $langTab[$BrowserLang1] ;
      //if not, lets use the site default language defined in the util.php file
      if (!isset($langSelected)) $langSelected = $langDefault ;
      //and lets write the final result in a cookie to remember it
      setcookie("langSelected" , $langSelected);
   endif;
   //if a change has been done through language_select.php, it overwrites the stuff above
   if(isset($langSelected2)):
      $langSelected = $langSelected2;
      setcookie("langSelected" , $langSelected2);
      endif;
   //finally, lets call the chosen language strings
   include(strtolower ("lang_" . $langSelected . ".php")) ;

Somit sollte also aus ("lang_" . $langSelected . ".php") folgendes werden: ("lang_deutsch.php").

Beim Aufrufen der Seite kommt aber lediglich folgende Fehlermeldung:

Warning: include(lang_.php) [function.include]: failed to open stream: No such file or directory in /var/www/web3/html/phpYellow/languages.php on line 55

Warning: include() [function.include]: Failed opening 'lang_.php' for inclusion (include_path='.') in /var/www/web3/html/phpYellow/languages.php on line 55

Man kann also sehen, dass die ausgelesene Variable $langSelected einfach in der Ausgabe fehlt.

Kann mir jemand sagen, ob ich in der Serverkonfiguration noch etwas aktivieren muss? Habe einen Debian 4.0 Apache Server.

Vielen Dank!
 
Kann es sein dass dein Script register_globals braucht? Dann in der php.ini register_globals auf ON setzen und noch einmal versuchen.

Grüße
 
$HTTP_ACCEPT_LANGUAGE wirst du vermutlich eher unter $_SERVER['HTTP_ACCEPT_LANGUAGE'] finden.

Gute Suchworte dazu sind: register_globals und "registered superglobals".
 
Vielen Dank für den Tipp. Jetzt klappt es endlich. Das ausgeschaltete register_globals scheint aus Sicherheitsgründen standardmäßig zu sein ... muss dann wohl bald mal meine Scripte ändern, damit register_globals wieder ausgeschlatet werden kann ... oder ist das mit der Sicherheit übertrieben?

You should do your best to write your scripts so that they do not require register_globals to be on; Using form variables as globals can easily lead to possible security problems, if the code is not very well thought of.

Vielen Dank jedenfalls!
 
Back
Top