Mailinglisten-Archive |
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