Sichtbarkeit der Variablen

Alles, was PHP betrifft, kann hier besprochen werden.

Sichtbarkeit der Variablen

Postby alex__ » 27. June 2007 10:39

Welche Servereinstellungen muss ich ändern, damit folgendes geht:
Ich hab in Datei1 Variablen zuweisungen.
In Datei2 wird Datei1 included. Wenn ich mir jetzt die Variable ausgeben lasse, dann geht das auch ohne Probleme.
So und wenn ich jetzt in Datei1 noch eine weitere Datei include in der nur die Variable aus Datei1 ausgegeben wird, dann zeigt er die mir nicht an, weil er die nich kennt. Auf einem anderen Server geht das. Jetzt wüsste ich gerne, was ich ändern muss, damit es auf beiden geht. Das muss dann ja wohl eine Servereinstellung sein.

Grüße
Alex
alex__
 
Posts: 6
Joined: 27. June 2007 10:31

Postby Wiedmann » 27. June 2007 11:40

Es gibt keine Einstellung, welche die "Sichtbarkeit" von Variablen bei einem include() einschränkt.

Dein Fehler/Problem muss wo anders (im Code) liegen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby alex__ » 27. June 2007 11:58

Aber wieso geht es dann auf einem anderen Server, es wurde ja nichts am Quellcode verändert. Hast du sonst eine Idee woran es liegen könnte. Ich dachte halt nur, dass es eine Einstellung ist, weil es sonst halt läuft.
alex__
 
Posts: 6
Joined: 27. June 2007 10:31

Postby KingCrunch » 27. June 2007 12:29

Nagut, aber willst du nur Code schreiben, der manchmal läuft, wenn zufällig die Server-Konfiguration stimmt?

Globale Variablen sind sowieso schlecht.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Wiedmann » 27. June 2007 12:45

Aber wieso geht es dann auf einem anderen Server, es wurde ja nichts am Quellcode verändert.

Keine Ahnung ohne deinen Code zu kennen.

Aber nach deiner Beschreibung sollte sich das Problem ja mit 3 Dateien und jeweils eine handvoll Zeilen darin nachstellen lassen?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby alex__ » 27. June 2007 13:17

Also ich hab folgende Dateien:

paths.php
Code: Select all
define("PATH_ROOT", "http://localhost/pfad_zum_ordner");
define("PATH_WEBSITE", PATH_ROOT."website/");


index.php
Code: Select all
require "paths.php";

echo PATH_WEBSITE."styles/styles.css";

include PATH_WEBSITE."inc/head.php";


head.php
Code: Select all
echo PATH_WEBSITE."styles/styles.css";


Die Konstante wird in der Index ausgegeben. Aber in der head.php wird nur die Konstante ansich ausgegeben. Also PATH_WEBSITE.
alex__
 
Posts: 6
Joined: 27. June 2007 10:31

Postby Wiedmann » 27. June 2007 13:31

a) fehlt zwischen "PATH_ROOT" und "website/" ein Slash.
b) fängt PHP - Code mit "<?php" an, und hört mit "?>" auf.
--> mit dem jetzt geposteten Code, so wie er hiersteht, kannst du das also nicht getestet haben...

c) warum machst du deine include()'s über HTTP und benutzt nicht das Dateisystem?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby alex__ » 27. June 2007 13:43

Das ist mir schon klar das PHP zwischen <?php ?> stehen muss. Ich kann schon PHP. Das war jetzt nur ein Auszug. Und der Slash steht in der Datei mit drin. Hab es nur vergessen mit zu kopieren.
Und das geht auch nich wenn ich das Dateisystem nutze. Daran liegt es nicht. Und es hat schon seinen Grund wieso ich das über HTTP mache. Aber das is ja auch nich mein Problem, sondern dass ich nich auf die Konstanten zugreifen kann.
alex__
 
Posts: 6
Joined: 27. June 2007 10:31

Postby Wiedmann » 27. June 2007 14:34

Das war jetzt nur ein Auszug.

Dann hast du mich falsch verstanden:
Ich hätte gerne ein kurzes Demo was bei dir nicht läuft, und was ich 1:1, wie du es gepostet hast, bei mir zum Gegentesten übernehmen kann.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby alex__ » 27. June 2007 14:51

Du könntest doch das nehmen und in PHP tags setzen. Weil das is ja der Teil, der nich läuft. Der andere Kram in der Datei spielt keine Rolle, weil das nur HTML ist oder halt andere PHP Verarbeitung, die damit nichts zu tun hat. Das ist schon der Teil der die Probleme macht.
alex__
 
Posts: 6
Joined: 27. June 2007 10:31

Postby Wiedmann » 27. June 2007 16:14

Und das geht auch nich wenn ich das Dateisystem nutze. Daran liegt es nicht.

Genau daran liegt es. Wenn du "head.php" über das Dateisystem einbinden würdest, würde es gehen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby alex__ » 27. June 2007 16:36

Ich brauch aber den absoluten Pfad und mit $_SERVER['DOCUMENT_ROOT'] ging es auch nicht. Deshalb hab ich HTTP verwendet.
Könntest du mir sagen wie ich das sonst löse?
alex__
 
Posts: 6
Joined: 27. June 2007 10:31

Postby Wiedmann » 27. June 2007 17:29

Code: Select all
include PATH_WEBSITE."inc/head.php";

Ich hab da beim Testen einfach das daraus gemacht:
Code: Select all
include "inc/head.php";


(Und ich geh halt davon aus, dass du deine Dateien in den selben Verzeichnissen jetzt hast wie ich...)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 5 guests