php.de
Alt 22.10.2005, 00:01  
Gast
 
Beiträge: n/a
Standard include()

Hallo,

grad neu hier und auch total neu in Sachen PHP...
Hab jetzt schon bisschen was probiert, aber irgendwie will es nicht, wie ich will.

Folgendes Problem:
Ich habe ein Script, das ich über include einbinde, was sich über ein weiteres Script zufällig Dateien aus einem bestimmten Ordner sucht und diese ausgibt.
Das ganze sieht so aus:

Code:
<?php
include ("includes/filepicker.inc.php");
?>
Die filepicker.inc.php sieht so aus:

Code:
<?php
require "dir.php";

$randomfilename = randdir("adverts");
$randomcontent = join(file("adverts/".$randomfilename),"\n");

echo <<<EOF

$randomcontent

EOF;
?>
und die Datei mit den Funktionen:

Code:
<?php

function adir($dirname) {
$handle=opendir($dirname); 
$dirarray = array();
while ($file = readdir($handle)) 
{
if ($file > "..") {array_push($dirarray,$file);}
}
closedir($handle);
return $dirarray;
}

function randdir($dirname) 
{
srand ((double) microtime() * 10000000);
$dirarray = adir($dirname);
$rndfile = array_rand($dirarray);
return $dirarray[$rndfile];
}

function print_array($array) { 
if(gettype($array)=="array") { 
echo "<ul>"; 
while (list($index, $subarray) = each($array) ) { 
echo "[*]$index <code>=&gt;</code> "; 
print_array($subarray); 
echo ""; 
} 
echo "[/list]"; 
} else echo $array; 
}

?>
Solange sich dies auf der oberen Ebene abspielt, ok.
Nun möchte ich die Datei filepicker.inc.php aber weiter mitnehmen; sie soll auch in andere Dateien included werden.

Code:
<?php
include ("../includes/filepicker.inc.php");
?>
Nun kommt die aber logischerweise nicht mehr mit der dir.php klar, weil die nun nicht mehr gefunden wird.

Wie schaffe ich es, dass die Datei filepicker.php die Datei dir.php immer findet, damit das entsprechende Verzeichnis ausgelesen werden kann?

Wäre super, wenn mir da einer helfen kann.

Danke euch im Voraus.
Gruß Ric
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.10.2005, 00:12  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

gib einfach den absoluten pfad an. Den siehst du ganz einfach bei jedem fatal error und bei anderen fehler, fängt meistens mit usr/ an, oder so ähnlich. Wenn das ganze auch auf anderen server laufen soll, gab es da glaube ich ne vordefinierte variable "DOCUMENT_ROOT", die war im $_SERVER oder $_ENV array glaube ich, schau dir die mal an. Wenn du das mit SCRIPT_NAME verbindest, und den dateinamen weghaust hast du ja den momentanten ordner, da hängste dann halt noch das "includes" dran und speicherst das in einer variable, die dann in der filepicker.inc.php vor dir.php gehangen wird. Alternativ kannst du auch versuchen was aus debug_backtrace rauszufiltern.
Oder einfac
Buhmann ist offline  
Alt 22.10.2005, 00:16  
Gast
 
Beiträge: n/a
Standard

Hi,

wieso gibt es ein Problem?

Liegt "dir.php" im includes-Verzeichnis und ist im include_path "." angegeben, dann sollte die Datei immer gefunden werden.

Zitat:
Zitat von php.net Manual
Dateien die mit include eingebunden werden, werden zuerst im include_path relativ zum gegenwärtigen Arbeitsverzeichnis gesucht und danach im include_path relativ zum Verzeichnis des ausgeführten Skripts. Zur Veranschaulichung: Falls Ihr include_path . entspricht, ist das gegenwärtige Arbeitsverzeichnis /www/. Sie haben über include include/a.php eingebunden und in diesem Skript steht die Anweisung include "b.php". In diesem Fall wird b.php zuerst im Verzeichnis /www/ gesucht und danach im Verzeichnis /www/include/.
PS:
$_SERVER["DOCUMENT_ROOT"] heißt das Ding. Das ist auch richtig.
 
Alt 22.10.2005, 00:32  
Gast
 
Beiträge: n/a
Standard

Hallo ihr,

hab mit so schneller Antwort gar nicht gerechnet, aber supi.

Also nach absoluter Pfadangabe hab ich nicht mehr viel verstanden.
Die Variable $_SERVER gibt's in dem Script auch nicht. Aber ich denke mal, ich sollte die irgendwo definieren!?

Es funzt zwar mit den absoluten Pfadangaben, aber gibt's nicht ne Möglichkeit, das anders zu regeln, sonst muss ich es ja wieder umschreiben, wenn ich es online stelle.

Das Zitat hab ich heut auch schon paar Male durchgelesen... Aber um ehrlich zu sein, ich versteh's net; so auch nicht die Sache mit include_path. Ich weiß gar nicht wohin damit genau, einmal in der Datei oder bei jedem include()....? Keine Ahnung.

Aber ich hab's gesagt, bin Neuling auf dem Gebiet
Wäre echt dankbar, wenn das ein bisschen genauer geht...


Danke euch
Ric
 
Alt 22.10.2005, 00:41  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

die variable $_SERVER müsste es eigentlic geben: http://www.php.net/manual/de/languag...predefined.php

wegen include-path:
http://de3.php.net/manual/de/functio...clude-path.php
http://de3.php.net/manual/de/functio...clude-path.php
Buhmann ist offline  
Alt 22.10.2005, 00:55  
Gast
 
Beiträge: n/a
Standard

Hi,

vermutlich reicht es aus, wenn Du die Datei dir.php in das selbe Verzeichnis wie filepicker.inc.php legst.
 
Alt 22.10.2005, 01:46  
Gast
 
Beiträge: n/a
Standard

Hey,

danke nochmals.
Nu hab ich es verstanden. $_SERVER ist eine vordefinierte Variable.
Klar, so funzt es auch mit dem Script:

Code:
<?php

require $_SERVER['DOCUMENT_ROOT'].'/dir.php';

$randomfilename = randdir($_SERVER['DOCUMENT_ROOT'].'/files');
$randomcontent = join(file($_SERVER['DOCUMENT_ROOT'].'/files/'.$randomfilename),"\n");

echo <<<EOF

$randomcontent

EOF;
?>
Super....

Schlaft gut.
Gruß Ric
 
Alt 22.10.2005, 03:29  
Gast
 
Beiträge: n/a
Standard

Dann noch zwei Tipps:
Zitat:
$randomcontent = join(file("adverts/".$randomfilename),"\n");

echo <<<EOF

$randomcontent

EOF;
Das kannst Du einfacher mit readfile haben. http://de2.php.net/readfile

Solltest Du doch mal den Inhalt einer Datei im Speicher brauchen, gibt es mittlerweile http://de2.php.net/file_get_contents statt der join/file-Krücke.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
include() ersetzen Shadow21 PHP Tipps 2006 3 30.08.2008 14:13
include isoliert ausführen – Lösungsansatz gesucht veit PHP-Fortgeschrittene 8 09.04.2008 09:26
hinter include wird eine 1 angezeigt |~Râdîant~| PHP Tipps 2008 8 19.09.2007 13:52
include Dateien wieder ausängen o.Ä. netti PHP Tipps 2007 8 17.12.2006 15:14
include problem Canni PHP Tipps 2006 26 14.11.2006 14:24
include, nur bestimmten teil neu laden Calli PHP Tipps 2006 2 27.01.2006 15:57
Auf Firmen-Server funzt kein include aus fremden Verzeichnis PHP-Fortgeschrittene 3 19.07.2005 16:49
Include und PHP/SQL Problem ?! PHP Tipps 2005-2 3 10.07.2005 16:04
[Erledigt] Include liegt in einem anderen Verzeichnis - es geht nix PHP Tipps 2005-2 3 03.07.2005 22:40
[Erledigt] Include Problem nach server wechsel PHP Tipps 2005 4 01.06.2005 00:42
[Erledigt] Sessions auch bei include aktiv? PHP Tipps 2005 1 28.02.2005 19:58
[Erledigt] Fehlermeldungen für include() PHP Tipps 2005 5 21.02.2005 11:34
[Erledigt] Variable geht bei include verloren PHP Tipps 2004-2 8 03.12.2004 09:13
[Erledigt] Problemme mit include... PHP Tipps 2004-2 6 30.11.2004 12:20
HTTP_GET_VARS + Include = Array leer PHP Tipps 2004-2 3 24.11.2004 15:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php random content .de, include php datei zufall, php <<<eof include, echo <<<eof, filepicker php, include aber script in einem anderen verzeichnis

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.