habe ein pfadproblem - glaube ich...

Alles, was PHP betrifft, kann hier besprochen werden.

habe ein pfadproblem - glaube ich...

Postby torte » 06. July 2005 17:22

hi,
bin 'ne ziemliche php anfängerin und versuche mich an einer von jemand anderem geschrieben php-datei (leider ist die person nicht zu sprechen)

habe bei mir vor kurzem xampp installiert (win xp pro, service pack2) und es scheint auch alles soweit zu funktionieren (ich sehe den splash von xampp)


wenn ich meinen localhost anspreche sehe ich auch die datei die ich erwarte nur bekomme ich ein echo mit angezeigt: "sitemap error"

was mich nun einigermassen verwirrt ist dass ich nix anderes gemacht habe als die ganzen dateien die auf meinem alten "wamp" wunderbar angezeigt werden (mit allen menüpunkten und soweiter) rüberkopiert habe in das htdocs verzeichnis des xampp und schon gehts nicht mehr...

habe mal die in frage kommende php datei unten anghängt, vielleicht hat ja jemand eine ahnung - ich komm hier schon seit tagen nicht weiter...

freue mich über jeden tip
gruz torte


hier nun die datei:

<?php
if ($WEB_ROOT == "") {
$WEB_ROOT = ereg_replace("\\\\\\\\", "/", $PATH_TRANSLATED);
$pfadLaenge = strlen ($WEB_ROOT) - strlen ($PATH_INFO);
$WEB_ROOT = substr ($WEB_ROOT, 0, $pfadLaenge);
}


$verzTiefe = "";
while (!file_exists ($verzTiefe."include/showhtm.php4")) $verzTiefe = $verzTiefe."../";
$verzTiefeAnz = strlen ($verzTiefe) / 3;
$WEB_ROOT = ereg_replace("\\\\\\\\", "/", $PATH_TRANSLATED);
$aktDateiPfad = "";
for ($i = 0; $i <= $verzTiefeAnz; $i++) {
if ($i > 0) $aktDateiPfad = substr($WEB_ROOT, strrpos($WEB_ROOT, "/")).$aktDateiPfad;
$WEB_ROOT = substr($WEB_ROOT, 0, strrpos($WEB_ROOT, "/"));
}
$aktDateiPfad = substr($aktDateiPfad, 1);


$maxRangTiefe = 3;
$aktDateiName = $_GET["sn"];
$seitenURL = $aktDateiName;

if ($seitenURL) {
$ankerPos = strpos ($seitenURL, "#");
if ($ankerPos) {
$seitenURL = ereg_replace("#", ".htm", $seitenURL);
$ankerSprung = '<SCRIPT LANGUAGE="JavaScript">'."\n".'<!--'."\n".'window.location.href = ".substr ($seitenURL, $ankerPos).";'."\n".'//-->'."\n".'</SCRIPT>'."\n";
} else {

$seitenURL = $seitenURL.".htm";
$ankerSprung = '';
}
}
else {
$seitenURL = $WEB_ROOT."_index.htm";
$aktDateiName = "-";
$aktDateiPfad = "-";
}

$docurl = $verzTiefe."sitemap/";
$DATA = @file ($docurl."sitemap.txt", "r");
if ($DATA) {
while (list ($nr, $zeile) = each ($DATA)) {
$sitemapspalten = explode (";", trim($zeile));
$menuepunkt[$nr-1]["Rang"] = explode ("#", $sitemapspalten[0]);
$menuepunkt[$nr-1]["Verzeichnis"] = $sitemapspalten[1];
$menuepunkt[$nr-1]["Dateiname"] = $sitemapspalten[2];
$menuepunkt[$nr-1]["Beschreibung"] = $sitemapspalten[3];
if ($menuepunkt[$nr-1]["Verzeichnis"] == $aktDateiPfad
&& $menuepunkt[$nr-1]["Dateiname"] == $aktDateiName) {
$aktMenuepunkt = $nr-1;
$aktRang = $menuepunkt[$aktMenuepunkt]["Rang"];
$aktRangTiefe = count($aktRang);
}
}
} else echo "sitemap error";

if (count($menuepunkt[$aktMenuepunkt+1]["Rang"]) > $aktRangTiefe) {
$aktRangTiefe++;
$startMenuepunkt = $aktMenuepunkt + 1;
} else $startMenuepunkt = $aktMenuepunkt;

$anzmenuepunkt = array();

$helpRangTiefe = $aktRangTiefe;
$helpmaxRangTiefe = $maxRangTiefe;
for ($i = $startMenuepunkt; $i < count($menuepunkt); $i++) {
if ($helpmaxRangTiefe > 0) {
$checkRang = count($menuepunkt[$i]["Rang"]);
while ($checkRang < $helpRangTiefe) {
$helpRangTiefe--;
$helpmaxRangTiefe--;
}
if (($helpmaxRangTiefe > 0) && ($checkRang == $helpRangTiefe) && ($checkRang > 1)) {
array_push($anzmenuepunkt, $menuepunkt[$i]);
}
}
}

$helpRangTiefe = $aktRangTiefe;
$helpmaxRangTiefe = $maxRangTiefe;
for ($i = $startMenuepunkt-1; $i >=0; $i--) {
if ($helpmaxRangTiefe > 0) {
$checkRang = count($menuepunkt[$i]["Rang"]);
if ($checkRang < $helpRangTiefe) {
$helpRangTiefe--;
$helpmaxRangTiefe--;
}
if (($helpmaxRangTiefe > 0) && ($checkRang == $helpRangTiefe) && ($checkRang > 1)) {
array_unshift($anzmenuepunkt, $menuepunkt[$i]);
}
}
}

$StilRang[1][1] = '<td bgcolor="#333333"><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#333333">'.
'<a class="toplevel" href="___URL___">___Beschreibung___</a></td>';
$StilRang[1][2] = '<td bgcolor="#333333"><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#333333">'.
'<a class="rtoplevel" href="___URL___">___Beschreibung___</a></td>';
$StilRang[1][3] = '<td bgcolor="#333333"><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#333333">'.
'<a class="rtoplevel" href="___URL___">___Beschreibung___</a></td>';
/*
$StilRang[1][1] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="2" height="1"><td>___AKT___'.
'<td width="100%"><a class="MenueRang1" href="___URL___">___Beschreibung___</a></td>';
$StilRang[1][2] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="2" height="1"><td>___AKT___'.
'<td width="100%"><a class="MenueRang1aktiv" href="___URL___">___Beschreibung___</a></td>';
$StilRang[1][3] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="2" height="1"><td>___AKT___'.
'<td width="100%" class="MenueRang1aktiv">___Beschreibung___</td>';
*/

$StilRang[2][1] = '<td><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td bgcolor="#6A6A6A"><img src="'.$verzTiefe.'bilder/trans.gif" width="30" height="10"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#6A6A6A">'.
'<a class="midlevel" href="___URL___">___Beschreibung___</a></td>';
$StilRang[2][2] = '<td><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td bgcolor="#6A6A6A"><img src="'.$verzTiefe.'bilder/trans.gif" width="30" height="10"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#6A6A6A">'.
'<a class="rmidlevel" href="___URL___">___Beschreibung___</a></td>';
$StilRang[2][3] = '<td><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td bgcolor="#6A6A6A"><img src="'.$verzTiefe.'bilder/trans.gif" width="30" height="10"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#6A6A6A">'.
'<a class="rmidlevel" href="___URL___">___Beschreibung___</a></td>';
/*
$StilRang[2][1] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="7" height="1"><td>___AKT___'.
'<td width="100%"><a class="MenueRang2" href="___URL___">___Beschreibung___</a></td>';
$StilRang[2][2] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="7" height="1"><td>___AKT___'.
'<td width="100%"><a class="MenueRang2aktiv" href="___URL___">___Beschreibung___</a></td>';
$StilRang[2][3] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="7" height="1"><td>___AKT___'.
'<td width="100%" class="MenueRang2aktiv">___Beschreibung___</td>';
*/

$StilRang[3][1] = '<td><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td bgcolor="#9F9F9F"><img src="'.$verzTiefe.'bilder/trans.gif" width="55" height="10"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#9F9F9F">'.
'<a class="lowlevel" href="___URL___">___Beschreibung___</a></td>';
$StilRang[3][2] = '<td><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td bgcolor="#9F9F9F"><img src="'.$verzTiefe.'bilder/trans.gif" width="55" height="10"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#9F9F9F">'.
'<a class="rlowlevel" href="___URL___">___Beschreibung___</a></td>';
$StilRang[3][3] = '<td><img src="'.$verzTiefe.'bilder/trans.gif" width="5" height="33"></td>'.
'<td bgcolor="#9F9F9F"><img src="'.$verzTiefe.'bilder/trans.gif" width="55" height="10"></td>'.
'<td width="100%" valign="middle" align="left" bgcolor="#9F9F9F">'.
'<a class="rlowlevel" href="___URL___">___Beschreibung___</a></td>';
/*
$StilRang[3][1] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="12" height="1"><td>___AKT___'.
'<td width="100%"><a class="MenueRang3" href="___URL___">___Beschreibung___</a></td>';
$StilRang[3][2] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="12" height="1"><td>___AKT___'.
'<td width="100%"><a class="MenueRang3aktiv" href="___URL___">___Beschreibung___</a></td>';
$StilRang[3][3] = '<td><img src="'.$verzTiefe.'images/trans.gif" width="12" height="1"><td>___AKT___'.
'<td width="100%" class="MenueRang3aktiv">___Beschreibung___</td>';
*/

$MenueBlock = '<table border="0" cellspacing="0" cellpadding="0" width="140">';

$offsetRang = count($anzmenuepunkt[0]["Rang"]) - 1;
foreach ($anzmenuepunkt as $value) {
$chooseStilRang = count($value["Rang"]) - $offsetRang;

if (strpos (".".implode (".", $aktRang), implode (".", $value["Rang"])) == 1) $chooseStilStatus = 2;
else $chooseStilStatus = 1;

if (implode (".", $aktRang) == implode (".", $value["Rang"])) {
$StilAKT = '<td><img src="'.$verzTiefe.'images/menurdot.gif" width="4" height="4"></td>'.
'<td><img src="'.$verzTiefe.'images/trans.gif" width="3" height="1"></td>';
$chooseStilStatus = 3;
} else $StilAKT = '';

$menuezeile = $StilRang[$chooseStilRang][$chooseStilStatus];
$menuezeile = ereg_replace("___URL___", $verzTiefe.$value["Verzeichnis"].'/p.php4?sn='.$value["Dateiname"], $menuezeile);
$menuezeile = ereg_replace("___Beschreibung___", $value["Beschreibung"], $menuezeile);
$menuezeile = ereg_replace("___AKT___", $StilAKT, $menuezeile);

$MenueBlock = $MenueBlock.
'<tr>'.
' <td>'.
' <table width="100%" border="0" cellspacing="0" cellpadding="0">'.
' <tr>'.$menuezeile.
' </tr>'.
' </table>'.
' </td>'.
'</tr>'.
'<tr>'.
' <td><img src="'.$verzTiefe.'images/trans.gif" width="140" height="5"></td>'.
'</tr>';

}
$MenueBlock = $MenueBlock.'</table>';


$DAT = fopen ($seitenURL, "r");
while (!feof($DAT)) {
$zeile = fgets($DAT, 9999);
$bispos = strpos ($zeile, ".htm\"");
if (!$bispos) $bispos = strpos ($zeile, ".htm#");
while ($bispos) {
$urlName = substr ($zeile, 0, $bispos);
$vonpos = strrpos ($urlName, "\"") + 1;
$urlName = substr ($urlName, $vonpos);
if (!strpos ($urlName, ":")) {
$urlSeitenName = basename($urlName);
$urlPfadName = dirname($urlName);
$aufrufendeSeite = "";
$laengeVorher = strlen ($zeile);
$zeile = substr_replace ($zeile, $urlPfadName."/p.php4?sn=".$urlSeitenName, $vonpos, $bispos - $vonpos + 4);
$laengeNachher = strlen ($zeile);
$bispos = $bispos + $laengeNachher - $laengeVorher;
}
$bispos = strpos ($zeile, ".htm\"", $bispos+1);
if (!$bispos) $bispos = strpos ($zeile, ".htm#", $bispos+1);
}

if ($ankerSprung != '') $zeile = ereg_replace("</body>", $ankerSprung."</body>", $zeile);

$zeile = ereg_replace("<!--\*\*\*MENUEBLOCK\*\*\*//-->", $MenueBlock, $zeile);

$zeile = ereg_replace("<!--\*\*\*LOSUNG\*\*\*//-->", $Losung, $zeile);

echo $zeile;
}
fclose ($DAT);
?>
torte
 
Posts: 3
Joined: 06. July 2005 17:02

Postby jakimo72 » 07. July 2005 21:50

1. Du musst in der PHP.ini einstellen
register_globals = On
oder anstelle von z.B. $PATH_TRANSLATED schreibt Du
$_SERVER['PATH_TRANSLATED'].
2. Eventuell gibt der Apache 2 $PATH_TRANSLATED nicht mehr aus.
anstelle davon kannst Du $SCRIPT_FILENAME verwenden.
Teste einfach mit Hilfe von phpinfo() welche Komponenten
in $_SERVER abgespeichert sind.
3. Wo wird $PATH_INFO definiert? Normalerweise nicht in $_SERVER
enthalten.
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

lerne ständig dazu ;-)

Postby torte » 08. July 2005 10:32

hi jakimo,

vielen dank für deine tipps, habe versucht alle zu berücksichtigen - aber leider kommt immer noch derselbe fehler: sitemap error

die datei showhtm.php4 sieht jetzt so aus (ab zeile 58 nix verändert )

<?php
if ($WEB_ROOT == "") {
$WEB_ROOT = ereg_replace("\\\\\\\\", "/", $SCRIPT_FILENAME);
$pfadLaenge = strlen ($WEB_ROOT) - strlen ($ENV{'FILEPATH_INFO'});
$WEB_ROOT = substr ($WEB_ROOT, 0, $pfadLaenge);
}


$verzTiefe = "";
while (!file_exists ($verzTiefe."include/showhtm.php4")) $verzTiefe = $verzTiefe."../";
$verzTiefeAnz = strlen ($verzTiefe) / 3;
$WEB_ROOT = ereg_replace("\\\\\\\\", "/", $SCRIPT_FILENAME);
$aktDateiPfad = "";
for ($i = 0; $i <= $verzTiefeAnz; $i++) {
if ($i > 0) $aktDateiPfad = substr($WEB_ROOT, strrpos($WEB_ROOT, "/")).$aktDateiPfad;
$WEB_ROOT = substr($WEB_ROOT, 0, strrpos($WEB_ROOT, "/"));
}
$aktDateiPfad = substr($aktDateiPfad, 1);


$maxRangTiefe = 3;
$aktDateiName = $_GET["sn"];
$seitenURL = $aktDateiName;

if ($seitenURL) {
$ankerPos = strpos ($seitenURL, "#");
if ($ankerPos) {
$seitenURL = ereg_replace("#", ".htm", $seitenURL);
$ankerSprung = '<SCRIPT LANGUAGE="JavaScript">'."\n".'<!--'."\n".'window.location.href = ".substr ($seitenURL, $ankerPos).";'."\n".'//-->'."\n".'</SCRIPT>'."\n";
} else {
$seitenURL = $seitenURL.".htm";
$ankerSprung = '';
}
}
else {
$seitenURL = $WEB_ROOT."/_index.htm";
$aktDateiName = "-";
$aktDateiPfad = "-";
}

$docurl = $verzTiefe."sitemap/";
$DATA = @file ($docurl."sitemap.txt", "r");
if ($DATA) {
while (list ($nr, $zeile) = each ($DATA)) {
$sitemapspalten = explode (";", trim($zeile));
$menuepunkt[$nr-1]["Rang"] = explode ("#", $sitemapspalten[0]);
$menuepunkt[$nr-1]["Verzeichnis"] = $sitemapspalten[1];
$menuepunkt[$nr-1]["Dateiname"] = $sitemapspalten[2];
$menuepunkt[$nr-1]["Beschreibung"] = $sitemapspalten[3];
if ($menuepunkt[$nr-1]["Verzeichnis"] == $aktDateiPfad
&& $menuepunkt[$nr-1]["Dateiname"] == $aktDateiName) {
$aktMenuepunkt = $nr-1;
$aktRang = $menuepunkt[$aktMenuepunkt]["Rang"];
$aktRangTiefe = count($aktRang);
}
}
} else echo "sitemap error";


da gibt es noch die datei index.php die geht so:

<?php
//Falls eine PHP-Installation die Variable $DOCUMENT_ROOT nicht setzt,
//wird versucht, diese mit Hilfe von $SCRIPT_FILENAME und $ENV{'FILEPATH_INFO'}zu generieren.
if ($DOCUMENT_ROOT == "") {
$DOCUMENT_ROOT = ereg_replace("\\\\\\\\", "/", $SCRIPT_FILENAME);
$pfadLaenge = strlen ($DOCUMENT_ROOT) - strlen ($ENV{'FILEPATH_INFO'});
$DOCUMENT_ROOT = substr ($DOCUMENT_ROOT, 0, $pfadLaenge);
}
include ($DOCUMENT_ROOT."/include/showhtm.php4");
?>


könnte mein problem etwas mit php 5 zu tun haben, wie gesagt läuft das script ja anstandslos auf php4 (meinem alten rechner)?

die änderung die ich an der varablen $path_info gemacht habe wurde vorgeschlagen da $path_info anscheinend in manchen bereichen nicht kompatibel mit apache 2 ist...

irgendwelche ideen was sonst noch falsch sein könnte?
vielen dank fürs durchlesen schon mal ;-)
gruss torte
torte
 
Posts: 3
Joined: 06. July 2005 17:02

Postby deepsurfer » 08. July 2005 11:33

könnte mein problem etwas mit php 5 zu tun haben, wie gesagt läuft das script ja anstandslos auf php4 (meinem alten rechner)?


DU kannst den derzeitigen XAMPP auch auf PHP4 switchen lassen, teste es, wenns funktioniert liegt es an PHP5
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby jakimo72 » 08. July 2005 13:13

Wie wärs anstelle von
$ENV{'FILEPATH_INFO'}
mit
$_ENV['FILEPATH_INFO']
?
Und dazu sollte zusätzlich diese Umgebungsvaribale
auch gesetzt sein...
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

es liegt an php5

Postby torte » 12. July 2005 09:33

@ deepsurfer > nach dem switch(echt cool dass das so einfach geht!!) auf php4 läuft das script... nun kann ich zumindest wieder testen was mit meinen menüs passiert.

@jakimo72 > werde das ausprobieren wenn ich wieder etwas zeit habe bin grad voll im stress und muss das zeug zum laufen bringen - und das ist ja jetzt auf php4 der fall...

danke an euch beide, werde weiter dranbleiben,
;-) torte
torte
 
Posts: 3
Joined: 06. July 2005 17:02


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests