phpbar.de logo

Mailinglisten-Archive

[php] require_once() - Unterschiedliche Pfadangaben zwischen PHP4.2.3 und PHP4.3.2???

[php] require_once() - Unterschiedliche Pfadangaben zwischen PHP4.2.3 und PHP4.3.2???

Carsten Krautwald info at webservice-krautwald.de
Don Aug 14 11:28:25 CEST 2003


Hi,

ich habe jetzt gerade ausprobiert, ob sich der Fehler mit drei 
"jungfräulichen" und neu erstellten Dateien reprozudieren läßt. Die 
Antwort: Ja! Leider!

Also, hier kurs der Quellcode:

<?php
// Datei index.php
echo "index.php";
require_once("1/datei_1.inc.php");
?>

<?php
// Datei /inc/datei_1.inc.php
echo "Datei 1";
require_once("inc/datei_2.inc.php");
?>

<?php
// Datei /inc/datei_2.inc.php
echo "Datei 2";
?>

Funktioniert auf der Entwicklermaschine wie erwartet. Auf der anderen 
Maschine werden nur die echos aus index.php und datei_1.inc.php 
angezeigt. datei_1.inc.php erzeugt dann noch folgende Fehlermeldung:

Warning: main(inc/datei_2.inc.php) [function.main]: failed to open 
stream: No such file or directory in 
c:\wampp1\htdocs\test\inc\datei_1.inc.php on line 3

Fatal error: main() [function.require]: Failed opening required 
'inc/datei_2.inc.php' (include_path='\wampp1\php\pear\') in 
c:\wampp1\htdocs\test\inc\datei_1.inc.php on line 3


Gruß

Carsten

Steffen Gebert schrieb:
> Mhh, wieder sehr merkwürdig.
> 
> was mir gerade eingefallen ist: $_SERVER["DOCUMENT_ROOT"] ist ja 
> eigentlich auch total falsch. Zunächst würde ich dir mal zu folgendem raten:
> gib statt "inc/" folgendes ein: dirname(__FILE__)."/inc/"
> 
> als kurzen test lässt du das aber einfach mal ausgeben, welcher pfad dann 
> entsteht.
> 
> dass es in einem php-release so einen bug gibt, bezweifle ich einfach stark. 
> irgendwo muss da ein fehler liegen. 
> hast du es mal neu und ganz einfach gemacht ?( einfach 3 dateien, die 
> etwas ausgeben und sich includen..)
> 
> mfg,
> steffen
> 
> 
> Am 14.08.2003 10:00:11, schrieb Carsten Krautwald <info at webservice-
> krautwald.de>:
> 
> 
>>Hallo Steffen,
>>
>>Danke für die superschnelle Antwort.
>>
>>
>>
>>>Hast du beachtet, dass der Pfad zu einer Datei, die aus einer bereits über 
>>>require eingebundeten Datei nicht von der eingebundeten ausgeht, 
> 
> sondern 
> 
>>>von der aufgerufenen Datei.
>>>
>>>Beispiel:
>>>
>>>/seite1.php:
>>>require_once("inc/include1.php");
>>>
>>>/inc/include1.php: (/inc/include2.php einbinden)
>>>require_once("include2.php");
>>>
>>>wird nicht gehen, da es in dem Verzeichnis / keine include2.php gibt, 
>>>sondern im Verzeichnis inc - daher müsste es heißen: require_once
>>>("inc/include2.php");
>>
>>Tja, aber genau das ist der Fall. Der originale Code (auf der 
>>Entwicklermaschine) ist eben so aufgebaut, wie auch Du empfiehlst. Also 
>>immer ausgehend von der ersten Verzeichnisinstanz, weil ja alle weiteren 
>>Datei aus Unterordner bezogen werden.
>>
>>Nur... auf dem Zweitrechner, dessen einziger Unterschied eben eine 
>>andere PHP-Version ist (4.3.2) läuft es nicht. Im Gegenteil: Genau das, 
>>was eigentlich nicht laufen dürfte, geht. Beispiel:
>>
>>index.php ruft im Unterverzeichnis /inc/ eine Datei auf
>>
>>require_once("inc/datei1.inc.php");
>>
>>datei1.inc.php ruft anschließend datei2.inc.php auf, die im gleichen 
>>Unterverzeichnis liegt. Auf der Entwicklermaschine läuft es mit dem 
>>korrekten Code:
>>
>>require_once("inc/datei2.inc.php");
>>
>>Auf dem Zweitrechner wird die Datei komischerweise erst geladen, wenn 
>>der Aufruf lautet:
>>
>>require_once("datei2.inc.php");
>>
>>Um ehrlich zu sein. Ich verstehe das nicht ganz und bin bisher auch im 
>>Internet nicht fündig geworden...
>>
>>Gruß
>>
>>Carsten
>>
>>-- 
>>** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
>>Informationen: http://www.phpbar.de
>>http://lists.phpbar.de/mailman/listinfo/php
>>
> 
> 
> 
> 

-- 
Carsten Krautwald

Webservice Krautwald => Internetseiten => Datenbanken => Usability-Tests

Wichelmannstrasse 38
49393 Lohne

Tel.: 0 44 42 / 808 975
Fax : 0 44 42 / 808 974

info at webservice-krautwald.de
www.webservice-krautwald.de


php::bar PHP Wiki   -   Listenarchive