php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Sonstiges > Off-Topic Diskussionen
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Off-Topic Diskussionen Kein Platz für Deine Frage gefunden? Dann bist Du hier genau richtig!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 14-11-2008, 13:13
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

DocumentRoot ist der Pfad aus der entsprechenden Apache-Direktive des umgebenden (v)Host. Das kann bei CLI-Aufrufen gar nicht gesetzt sein.

Wie wäre es mit wget?
Mit Zitat antworten
  #17 (permalink)  
Alt 14-11-2008, 13:15
sEeb
 Registrierter Benutzer
Links : Onlinestatus : sEeb ist offline
Registriert seit: Aug 2003
Beiträge: 135
sEeb ist zur Zeit noch ein unbeschriebenes Blatt
sEeb eine Nachricht über ICQ schicken
Standard

wie soll wget helfen? damit lade ich den inhalt von dateien/urls?
Mit Zitat antworten
  #18 (permalink)  
Alt 14-11-2008, 13:23
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Bei "wget http://example.com/yourscript.php" statt "php /path/to/yourscript.php" läuft dein Script im Kontext deines Webservers und nur dann gibt es auch ein DocRoot.
Mit Zitat antworten
  #19 (permalink)  
Alt 14-11-2008, 13:29
sEeb
 Registrierter Benutzer
Links : Onlinestatus : sEeb ist offline
Registriert seit: Aug 2003
Beiträge: 135
sEeb ist zur Zeit noch ein unbeschriebenes Blatt
sEeb eine Nachricht über ICQ schicken
Standard

belastet das den server nicht mehr als wenn ich direkt über php aufrufe? ich halte das für meine zwecke nicht für die lösung de sproblems, da ich noch andere komponenten habe die mit einspielen. ich suche eine lösugn für ein fehlendes DOCUMENT_ROOT
Mit Zitat antworten
  #20 (permalink)  
Alt 14-11-2008, 13:40
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

__FILE__ ist immer gegeben. einfach den dateinamen abschneiden und du hast den absoluten pfad
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #21 (permalink)  
Alt 14-11-2008, 13:44
sEeb
 Registrierter Benutzer
Links : Onlinestatus : sEeb ist offline
Registriert seit: Aug 2003
Beiträge: 135
sEeb ist zur Zeit noch ein unbeschriebenes Blatt
sEeb eine Nachricht über ICQ schicken
Standard

Das klingt nach PHP_SELF, bringt mir aber leider auch nichts.

DOCUMENT_ROOT gibt beispielsweise

/usr/www/httpdocs aus, so dass ich darauf meine include festlegen kann

z.b.

$_SERVER['DOCUMENT_ROOT']/ebene1/ebene2/class.php

wenn ich aber __FILE__ oder PHP_SELF verwende und mich einmal in ebene1 udn einmal in ebene2 befinde haben die variablen verschiedende werte und meine includes wären unterschiedlich und haken dann ...
Mit Zitat antworten
  #22 (permalink)  
Alt 14-11-2008, 13:51
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Es gibt keine Alternative. DR wird vom Webserver nur deswegen reingereicht, damit man Links bauen kann. Viele Scripte nutzen es auch, um ihre Includes zu finden. Das ist aber Pfeffer.

Die Idee hinter
include $_SERVER['DOCUMENT_ROOT'].'/incs/functions.php';
ist, dass man nicht wissen muss, wo das Verzeichnis incs liegt. Aber es bringt eben die Einschränkung mit sich, dass incs nicht außerhalb des DR liegen kann.

tick tack tick tack


Doch, kann es!
include $_SERVER['DOCUMENT_ROOT'].'/../incs/functions.php';
Die Einschränkung ist also, dass der Programmierer die relative Position von incs kennen muss und zwar relativ zu irgendwas, was er wiederum nicht kennen muss.

Ganz toll, bringt aber nichts. Die gewonnene Flexibilität ist die, dass man den DR als Ganzes verschieben kann. Einzelne Dateien kann man allerdings nicht verschieben.
Die relative Position der Datein zueinander ist also fix, lediglich der Standort des alles umgebenden Verzeichnisses ist flexibel. Das wäre aber auch dann der Fall, wenn sich die Scripte relativ zueinander referenzieren, also mit
include '../incs/functions.php';


Wenn du das auch so machst, so relativ, dann brauchst du keine Variable für DR.
Mit Zitat antworten
  #23 (permalink)  
Alt 14-11-2008, 13:51
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.564
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von sEeb
Das klingt nach PHP_SELF, bringt mir aber leider auch nichts.

DOCUMENT_ROOT gibt beispielsweise

/usr/www/httpdocs aus, so dass ich darauf meine include festlegen kann

z.b.

$_SERVER['DOCUMENT_ROOT']/ebene1/ebene2/class.php

wenn ich aber __FILE__ oder PHP_SELF verwende und mich einmal in ebene1 udn einmal in ebene2 befinde haben die variablen verschiedende werte und meine includes wären unterschiedlich und haken dann ...
Mach ein Config-File, in dem die Pfade gesetzt werden und du weißt, wo sich dieses Datei befinden. Wo ist also das Problem?
Mit Zitat antworten
  #24 (permalink)  
Alt 14-11-2008, 13:57
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Sowas macht man über den Include Path. Alles andere ist Müll.
Mit Zitat antworten
  #25 (permalink)  
Alt 14-11-2008, 13:57
sEeb
 Registrierter Benutzer
Links : Onlinestatus : sEeb ist offline
Registriert seit: Aug 2003
Beiträge: 135
sEeb ist zur Zeit noch ein unbeschriebenes Blatt
sEeb eine Nachricht über ICQ schicken
Standard

das problem ist folgendes:

ich möchte z.b. datei

DOCUMENT_ROOT/ebene1/class.php einbinden.
diese beinhaltet ein include nach '../class2.php' als auf DOCUMENT_ROOT/class2.php

wenn ich nun aber von DOCUMENT_ROOT/ebene1/ebene2/class.php
aus versuche die datei einzubinden würde aus include '../class2.php' ein DOCUMENT_ROOT/ebene1/class2.php und das ganze schlägt fehl ...

das setzen eines config files bringt mir dabei auch nicht viel, denn wenn ich da in jeder datei den absoluten pfad angebe und ich die datei mal verschiebe warum auch immer, müssen dutzende dateien angepasst werden
Mit Zitat antworten
  #26 (permalink)  
Alt 14-11-2008, 14:02
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Die .. beziehen sich nicht auf die Position des zuletzt inkludierten Files sondern aufs aktuelle Verzeichnis.

Beispiel:

/path/to/yourscript.php wechselt nach dirname(__FILE__) und inkludiert "../incs/foo/class1.php". Der ganze Pfad ist also /path/to/../incs/foo, effektiv ist das /path/incs/foo.
/path/incs/foo/class1.php inkludiert nun seinerseits "../class2.php".

Na, wo muß class2.php liegen?
Der ganze Pfad liest sich /path/to/../incs2, effektiv /path/incs2 und nicht, wie du anscheinend glaubst /path/incs/foo/../incs2! Der Grund ist klar: Die relativen Pfade beziehen sich auf das Arbeitsverzeichnis, nicht auf den Standort der Datei, in der sie benutzt werden. In Code ausgedrückt:
include '../class.php';
ist das selbe wie
include getcwd().'/../class.php';
aber nicht das selbe wie
include dirname(__FILE__).'/../class.php';

Geändert von onemorenerd (14-11-2008 um 14:16 Uhr)
Mit Zitat antworten
  #27 (permalink)  
Alt 14-11-2008, 14:02
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.564
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Arbeite mit autoload, dann ersparst du dir 99% der includes.
Mit Zitat antworten
  #28 (permalink)  
Alt 14-11-2008, 14:04
sEeb
 Registrierter Benutzer
Links : Onlinestatus : sEeb ist offline
Registriert seit: Aug 2003
Beiträge: 135
sEeb ist zur Zeit noch ein unbeschriebenes Blatt
sEeb eine Nachricht über ICQ schicken
Standard

das aktuelle verzeichnis kann genausogut variieren. auf autoload habe ich keinen einfluss derzeit ...
Mit Zitat antworten
  #29 (permalink)  
Alt 14-11-2008, 14:11
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.564
h3ll befindet sich auf einem aufstrebenden Ast
Standard

1. Der Server ist komisch konfiguriert.
2. Eine vernünftige Lösung (autoload) willst/kannst du nicht.
3. Du hast vor ganze Programmverzeichnis herumzuschieben.

Das sind 3 Dinge, die alleine schon furchtbar sind, aber alles zusammen... Unter den Bedingungen würde _ich_ nicht programmieren wollen.
Mit Zitat antworten
  #30 (permalink)  
Alt 14-11-2008, 16:40
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie h3ll schon sagt: arbeite mit autoload().
und noch wichtiger: sammel deine klassen in einem ordner.
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

html5pattern ansehen html5pattern

Pflichtfelder und Eingabevorgaben für Formulare validieren

06.07.2018 Berni | Kategorie: HTML5/ HowTo
Adventure PHP Framework

Das Adventure PHP Framework versteht sich als Hilfsmittel zur Implementierung von objektorientierten, generischen und wiederverwendbaren PHP-Web-Applikationen.

05.07.2018 phpler | Kategorie: PHP/ Framework
Phpstorm ansehen Phpstorm

Umfangreiche Entwicklungsumgebung für PHP-Programmierer inkl JavaScript und HTML Support. Jetzt Version 8.0!

03.07.2018 Berni | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:09 Uhr.