chdir(): No such file or directory / dir(): open_basedir restriction in effect

WACSF

Erfahrenes Mitglied
Guten Tag erstmal.

ich habe das bm_gallery Script von MARTIN BAUER (h**p://bauer-martin.com/)
Ich habe es auf meinen Webspace von Loomes getestet und es geht einwandfrei.
Keine Bedenken wegen des COPYRIGHTS, ich habe ihn gefragt, ob ich es wegmachen darf und er hat es mir erlaubt. Nun ja, danach wollte ich es auf meinem anderen Server ausprobieren (LOCALHOST). Habe alles eingerichtet und es geht einwandfrei. So, danach wollte ich es wieder auf einen anderen Server draufmachen, und da geschah es. Es kam ein Fehler, der mir einfach nichts sagt und ich nicht weiß, wie ich es beheben kann. Ich habe bereits die PHPMANUAL angeschaut, aber darin steht nichts dergleichen.
Mir scheint es so, dass ich da irgendeinen Fehler in den Einstellungen vom PHP reingebracht habe, den ich aber nicht finde.
Hier seht ihr den Fehler erstmal, der mir ausgegeben wird:
Code:
Warning: chdir(): No such file or directory (errno 2) in /var/www/feierabend/feierabend-augsburg.de/redesign/bm_gallery/upload/bm_gallery/functions.inc.php on line 80

Warning: dir(): open_basedir restriction in effect. File(/..//bm_gallery/bilder/) is not within the allowed path(s): (/var/www/feierabend/:/usr/share/php) in /var/www/feierabend/feierabend-augsburg.de/redesign/bm_gallery/upload/bm_gallery/functions.inc.php on line 81

Warning: dir(/..//bm_gallery/bilder/): failed to open dir: Operation not permitted in /var/www/feierabend/feierabend-augsburg.de/redesign/bm_gallery/upload/bm_gallery/functions.inc.php on line 81

Fatal error: Call to a member function on a non-object in /var/www/feierabend/feierabend-augsburg.de/redesign/bm_gallery/upload/bm_gallery/functions.inc.php on line 82

Und hier kann ich euch noch die entsprechenden PHP Code geben, an dem aber sicherlich nichts falsch ist:
PHP:
function read_img() {
	@include("config_gallery.inc.php");

	chdir($img_root.$_GET["kat"]);
	$fd = dir($img_root.$_GET["kat"]);
	while($v = $fd->read()) {
		if(is_file($v) && (strtolower(substr($v,-3)) == "png" || strtolower(substr($v,-3)) == "jpg" || strtolower(substr($v,-4)) == "jpeg")) {
			$arr[] = $v;
		}
	}
Mein Serveradmin hat das folgendermaßen ausgedrückt:
Es kommen Fehler, weil die Pfadangabe /..//bm_gallery/bilder/ nicht stimmt.
soweit ok. Nur habe ich diesen Pfad nirgends angegeben:
[...]
[...]
Wenn ich mir die Variable am Ende der Config-Datei anzeigen lasse, stimmt alles.
Lasse ich sie mir nach dem Include anzeigen, dann steht in $img_root nur noch "/..//bm_gallery/bilder/"
Ich weiß jetzt nicht, ob ich euch hier den Link zu der "Problemseite" angeben darf, da muss ich mir nochmal schnell die Netti durchlesen, also wird wahrscheinlich bald ein EDIT kommen.

Ich hoffe so, dass einer von euch mir eine Lösung sagen kann. Selbstverständlich kann ich euch auch per PN dann die Seite schicken und sogleich die phpinfo.php.

Ich würde mich worklich sehr über Hilfe freuen.

Mit freundlichen Grüßen,

WACSF
 
Hi!

Es gibt doch garantiert eine Konfigurations-Datei, in der du die Pfade zu deinen gewünschten Verzeichnissen anpassen musst / kannst. Vermutlich hast du ans Ende eines Pfades ein Slash gesetzt, obwohl dort keines hin darf!

Mamphil
 
Hiho, ich bin der Serveradmin der ganzen Kiste.
Die Pfade in der config Datei stimmen. Und es ist egal ob mit oder ohne / am ende es klappt nicht.
In der Konfigurationsdatei stimmt der pfad noch
also /das/hier/ist/der/korrekte/pfad/zu//bm_gallery/bilder/

Nachdem die config Datei includet wird, leutet der Pfad aber plötzlich /..//bm_gallery/bilder/
Und das ist doch schon sehr verwirrend.
 
Cyb, ich glaube Dein Server ist ein GHOSTSERVER. Wenn das hier in diesem Board keiner weiß, dann ist es echt was extrem verplantes. Nun ja.

WACSF
 
Das Problem wird wohl sein, dass niemand eraten kann, wie das Script funktioniert, bzw. was es aus den Pfaden macht.

Allerdings hege ich die Vermutung, dass der Include-Path über die Funktion [phpf]ini_set[/phpf] erweitert werden muss (oder direkt in der PHP-Konfiguration), um keine Exception der Basedir-Restiction auszulösen.

snuu
 
Original geschrieben von snuu
Allerdings hege ich die Vermutung, dass der Include-Path über die Funktion [phpf]ini_set[/phpf] erweitert werden muss (oder direkt in der PHP-Konfiguration), um keine Exception der Basedir-Restiction auszulösen.

eigentlich nicht, da der orginal pfad ja innerhalb des base_dirs liegt. nur plötzlich wird der pfad so geändert, dass er ins root directory will. was natürlich verboten ist.

blue kann ja gern mal den code posten. ich kann mir die änderung jedenfalls nicht erklären.
 
Ich poste jetzt mal den kompletten Code der functions.inc.php
PHP:
<?php
#-------------------------------------------------------------------
# Kategorien anzeigen
#-------------------------------------------------------------------

function read_kat() {
	@include("bm_gallery/config_gallery.inc.php");
#--------zusätzlich eingefügt--------------
$i=0; 
chdir($img_root.$_GET["kat"]); 
    $fd = dir($img_root.$_GET["kat"]); 
    while($v = $fd->read()) { 
        if(!is_file($v)) { 
            $arr[$i] = $v; 
            $datum[$i]=filemtime($img_root.$_GET["kat"].$v); // ich weiss jetzt nicht, ob da noch ein ."/". vor das $v muß... 
            $sortier_hilfsarray[$i]=$img_root.$_GET["kat"].$v; 
            $i++; 
        } 
    } 
    $fd->close();
#--------zusätzlich eingefügt-------------- 
	array_multisort($sortier_hilfsarray,SORT_DESC,$datum,SORT_DESC,$arr,SORT_DESC); 
// Frag mich jetzt nicht, warum $datum oben getrennt wurde.. Ich bekomm's nicht gefixt. 
// Es heisst natürlich $datum 
	
	
	echo("<p><table width=\"90%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr><td bgcolor=\"".$border_color."\">\n");
	echo("<table width=\"100%\" align=\"center\" cellpadding=\"2\" cellspacing=\"".$border."\" border=\"0\">\n");
	echo("<tr><td colspan=\"3\" bgcolor=\"".$bg_color_1."\">");
	main_nav($font_1);
	echo("</td></tr>\n");


	if(count($arr) > 2) {
		echo("<tr><td bgcolor=\"".$bg_color_2."\">Kategorie</td><td bgcolor=\"".$bg_color_2."\"><img src=\"bm_gallery/img/kats.gif\" width=\"20\" height=\"21\" alt=\"Kategorien\"></td><td bgcolor=\"".$bg_color_2."\"><img src=\"bm_gallery/img/bilder.gif\" width=\"20\" height=\"20\" alt=\"Bilder\"></td></tr>\n");
	
		foreach($arr as $elem) {
			if($elem != "." && $elem != "..") {
				$pics = 0;
				$kats = 0;			
			
				chdir($img_root.$_GET["kat"].$elem);
				$kat_fd = dir($img_root.$_GET["kat"].$elem);
				while($v = $kat_fd->read()) {
					if(is_file($v) && (strtolower(substr($v,-3)) == "png" || strtolower(substr($v,-3)) == "jpg" || strtolower(substr($v,-4)) == "jpeg")) {
						$pics++;
					} elseif(!is_file($v)) {
						$kats++;
					}
				}
				$kat_fd->close();
				$kats = $kats - 2;
							
				$elem_tmp = str_replace("ä","&auml;",$elem);
				$elem_tmp = str_replace("ö","&ouml;",$elem_tmp);
				$elem_tmp = str_replace("ü","&uuml;",$elem_tmp);
				$elem_tmp = str_replace("Ä","&Auml;",$elem_tmp);
				$elem_tmp = str_replace("Ö","&Ouml;",$elem_tmp);
				$elem_tmp = str_replace("Ü","&Uuml;",$elem_tmp);
				$elem_tmp = str_replace("_","&nbsp;",$elem_tmp);
			
				echo("<tr><td bgcolor=\"".$bg_color_2."\"><a href=\"$PHP_SELF?kat=".$_GET["kat"].$elem."/\">".$elem_tmp."</a></td>\n");
				echo("<td bgcolor=\"".$bg_color_2."\">".$kats."</td>\n");				
				echo("<td bgcolor=\"".$bg_color_2."\">".$pics."</td></tr>\n");
			}
		}
	}
	
	echo("</table>\n</td></tr></table></p>");
	chdir($_SERVER['DOCUMENT_ROOT']);
}

#-------------------------------------------------------------------
# Thumbs anzeigen
#-------------------------------------------------------------------

function read_img() {
	@include("config_gallery.inc.php");

	chdir($img_root.$_GET["kat"]);
	$fd = dir($img_root.$_GET["kat"]);
	while($v = $fd->read()) {
		if(is_file($v) && (strtolower(substr($v,-3)) == "png" || strtolower(substr($v,-3)) == "jpg" || strtolower(substr($v,-4)) == "jpeg")) {
			$arr[] = $v;
		}
	}
	$fd->close();
	
	$img_anz = count($arr);
	
	if($img_anz > 0) {
		echo("<p><table width=\"90%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr><td bgcolor=\"".$border_color."\">\n");
		echo("<table width=\"100%\" cellpadding=\"2\" cellspacing=\"".$border."\" ><tr><td bgcolor=\"".$bg_color_1."\" colspan=\"".$col."\" style=\"color: ".$font_1.";\">Seite: \n");
	
		$seiten = $img_anz / $epp;
		if(!isset($seite) || $seite > img_anz) { $seite = 0; }
		for($i = 0; $i < $seiten; $i++)
		{
			echo("<a href=\"".$PHP_SELF."?seite=".$i."&kat=".$_GET["kat"]."\" style=\"color: ".$font_1.";\">".($i + 1)."</a>&nbsp;");
		} $i = 0;	
		
		echo("</td></tr>\n");
	
		$y = 0;	
		foreach($arr as $elem) {
			if($y >= ($_GET["seite"] * $epp) && $y < ($_GET["seite"] * $epp + $epp)) {
				create_init($doc_root, $img_root, $elem);
			
				if($i % $col == "0" ) { 
					echo "<tr bgcolor=\"".$bg_color_2."\">\n"; 
					$merker = $col; 
				}
				$vote_arr = read_init($img_root, $elem, "vote");
				$vote_arr = explode(",", $vote_arr);
				if($vote_arr[0] == 0) {
					$wert = "unbewertet";
				} else {
					$wert =  $vote_arr[1] / $vote_arr[0];	
					$wert = round($wert,2);
				}				
				 
				echo("<td width=\"".(round(100/$col))."%\"><p align=\"center\"><a href=\"".$PHP_SELF."?act=view&bild=".$y."&kat=".$_GET["kat"]."\">");
				echo("<img src=\"bm_gallery/thumb.php?bild=".$elem."&kat=".$_GET["kat"]."\" alt=\"".$elem."\" border=\"0\" align=\"center\">");
				echo("</a></p><p><b>Hits:</b> ".read_init($img_root, $elem, "hits")."<br><b>Bewertung:</b> ".$wert."<br><b>Upload:</b> ".date("Y-m-d", @filectime($img_root.$_GET["kat"]."/".$elem))."</p></td>\n");
				$merker--; 
				if($merker == "0" ) {
					echo ("</tr>\n");
				}
				$i++;		
			}
			$y++;
		}

		for($x = 0; $x < $merker; $x++) {
			echo("<td width=\"".(round(100/$col))."\" bgcolor=\"".$bg_color_2."\">&nbsp;</td>\n");
		}
		
		if ($merker != "0" ) {
			echo ("</tr>\n");
		}
		$y = 0;
		
		echo("</table></td></tr></table></p>\n");
	}
	
	chdir($_SERVER['DOCUMENT_ROOT']);
}

#-------------------------------------------------------------------
# Bild anzeigen
#-------------------------------------------------------------------

function view_img() {
	include("bm_gallery/config_gallery.inc.php");

	$y = 0;
	chdir($img_root.$_GET["kat"]);
	$fd = dir($img_root.$_GET["kat"]);
	while($v = $fd->read()) {
		if(is_file($v) && (strtolower(substr($v,-3)) == "png" || strtolower(substr($v,-3)) == "jpg" || strtolower(substr($v,-4)) == "jpeg")) {
			$arr[] = $v;
		
			if($y == $_GET["bild"]) {
				$image = $v;
			}			
			$y++;
		}
	}
	$fd->close();
	
	$i_width = explode(",", $i_width);
	
	if($_POST["img_width"] == "") {
		$_POST["img_width"] = $i_width[0];
	}	
	
	$image_url = $img_root.$_GET["kat"].$image;
	$info = getimagesize($image_url);
	$f_image = $info[0] / $_POST["img_width"];
	
	// Ini-Datei erzeugen falls noch nicht vorhanden
	create_init($doc_root, $img_root, $image);
	
	// Bilddaten anzeigen	
	echo("<p><table align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr><td bgcolor=\"".$border_color."\">\n");
	echo("<table width=\"100%\" align=\"center\" cellpadding=\"2\" cellspacing=\"".$border."\" border=\"0\">\n");
	echo("<tr><td bgcolor=\"".$bg_color_1."\" colspan=\"2\" style=\"color: ".$font_1.";\">"); 
	if($bild_target != 1) {
		main_nav($font_1); 
		arrow(); 
	}
	echo($image."</td></tr>");
	echo("<tr align=\"center\"><td bgcolor=\"".$bg_color_2."\" colspan=\"2\">\n");
	echo("<img src=\"bm_gallery/image.php?bild=".$image."&kat=".$_GET["kat"]."&f_image=".$f_image."\" alt=\"".$image."\"></td></tr>\n");	
	
	// Bild-Hits zählen
	count_hits($img_root, $image);

	// Init-Inhalte auslesen
	echo("<tr><td bgcolor=\"".$bg_color_2."\"><b>Beschreibung:</b></td><td bgcolor=\"".$bg_color_2."\">".read_init($img_root, $image, "beschreibung")."</td></tr>\n");
	echo("<tr><td bgcolor=\"".$bg_color_2."\"><b>Bild-Hits:</b></td><td bgcolor=\"".$bg_color_2."\">".read_init($img_root, $image, "hits")."</td></tr>\n");	
	echo("<tr><td bgcolor=\"".$bg_color_2."\" rowspan=\"2\"><b>Bewertung:</b></td><td bgcolor=\"".$bg_color_2."\">");
	
	$vote_arr = read_init($img_root, $image, "vote");
	$vote_arr = explode(",", $vote_arr);
	if($vote_arr[0] == 0) {
		echo("unbewertet");
	} else {
		$wert =  $vote_arr[1] / $vote_arr[0];	
		echo(round($wert,2));
	}
	
	echo("</td></tr><tr><td bgcolor=\"".$bg_color_2."\">\n".vote_form($image, $bg_color_1, $bg_color_2, $font_1));	
	echo("</td></tr><tr><td bgcolor=\"".$bg_color_2."\"><b>Originalgr&ouml;&szlig;e: ".$info[0]."x".$info[1]."</b></td>\n");
	echo("<td bgcolor=\"".$bg_color_2."\"><form action=\"".$_SERVER["PHP_SELF"]."?act=view&bild=".$_GET["bild"]."&kat=".$_GET["kat"]."\" method=\"post\">\n");
	echo("<select name=\"img_width\">");

	foreach($i_width as $width_elem) {
		if($width_elem <= $info[0]) {
			$h = round($info[1] / ($info[0] / $width_elem));
			echo("<option value=\"".$width_elem."\"");
			if($width_elem == $_POST["img_width"]) {
				echo(" selected");
			}
			echo(">".$width_elem."x".$h."</option>\n");
		}
	}
	echo("<option value=\"".$info[0]."\">Origanlgr&ouml;&szlig;e</option>");
	echo("</select>\n");
	echo("<input type=\"submit\" name=\"send\" value=\"Anzeigen\">\n");
	
	echo("</form></td></tr>\n");

	if($mail_enable == 1) {
		echo("<tr><td colspan=\"2\" bgcolor=\"".$bg_color_2."\"><a href=\"bm_gallery/send_image.php?kat=".$_GET["kat"]."&image=".$image."\" target=\"_blank\">Bild per e-Mail versenden</a></td></tr>\n");	
	}
	
	echo("<tr><td bgcolor=\"".$bg_color_2."\" align=\"left\">"); 
	if($_GET["bild"] != 0) {
		echo("<a href=\"".$PHP_SELF."?act=view&bild=".($_GET["bild"]-1)."&kat=".$_GET["kat"]."\">&lt;&lt; Zur&uuml;ck</a>");
	} 
	echo("</td>\n<td bgcolor=\"".$bg_color_2."\" align=\"right\">");
	if($_GET["bild"] != ($y - 1)) {
		echo("<a href=\"".$PHP_SELF."?act=view&bild=".($_GET["bild"]+1)."&kat=".$_GET["kat"]."\">Weiter &gt;&gt;</a>");
	}
	echo("</td></tr>\n");
	echo("</table></td></tr></table></p>\n");	
	
	// Kommentare
	echo("<p><table align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr><td bgcolor=\"".$border_color."\">\n");
	echo("<table width=\"100%\" align=\"center\" cellpadding=\"2\" cellspacing=\"".$border."\" border=\"0\">\n");
	echo("<tr><td bgcolor=\"".$bg_color_1."\" colspan=\"2\" style=\"color: ".$font_1.";\"><b>Kommentare</b></td></tr>");	
	echo("<tr><td bgcolor=\"".$bg_color_2."\" colspan=\"2\" align=\"center\"><a href=\"#kommentar\">Kommentar schreiben</a></td></tr>");
	
	// Kommentare auslesen
	$kom_arr = read_init($img_root, $image, "kommentare");
	$kom_arr = explode("|;", $kom_arr);
	
	// Kommentare anzeigen
	$anz = count($kom_arr); $i = 1;
	foreach($kom_arr as $arr) {
		$arr = explode("|", $arr, 4);
		if($i < $anz) {
			if($arr[1] != "") {
				$user = "<a href=\"mailto:".$arr[1]."\">".$arr[0]."</a>";
			} else {
				$user = $arr[0];
			}
		
			echo("<tr bgcolor=\"".$bg_color_2."\">
			  <td colspan=\"2\"><b>".$user." schrieb am ".$arr[2]."</b></td>
			</tr>
			<tr bgcolor=\"".$bg_color_2."\">
			  <td colspan=\"2\">".$arr[3]."</td>
			</tr>\n");
		}
		$i++;
	}
	
	// Kommentar schreiben Formular
	kommentar_form($image, $bg_color_1, $bg_color_2, $font_1);
	echo("</table></td></tr></table></p>\n");
}

#-------------------------------------------------------------------
# Navigation
#-------------------------------------------------------------------

function main_nav($font_1) {
	$self = explode("?", $_SERVER["PHP_SELF"]);

	echo("<a href=\"".$self[0]."\" style=\"color: ".$font_1.";\">Home</a>");

	$pieces = explode("/", $_GET["kat"]);
	$anz = count($pieces);
	
	$i = 0;
	foreach($pieces as $nav) {
		if($nav != "") {
			echo(arrow()."<a href=\"".$self[0]."?kat=");
			for($x = 0; $x <= $i; $x++) {
				echo($pieces["$x"]."/");
			}
			echo("\" style=\"color: ".$font_1.";\">$nav</a>");
		}
		$i++;
	}
	chdir($_SERVER['DOCUMENT_ROOT']);	
}

#-------------------------------------------------------------------
# Pfeil
#-------------------------------------------------------------------

function arrow() {
	echo("&nbsp;<img src=\"bm_gallery/img/pfeil.gif\" width=\"15\" height=\"15\" alt=\"Pfeil\">&nbsp;");
}

#-------------------------------------------------------------------
# Copyright
#-------------------------------------------------------------------

function copyright() {
	echo("\n<p style=\"font-size: 9px\" align=\"center\">B|ue|V|oo|V</p>");
}

#-------------------------------------------------------------------
# Init-Datei erstellen
#-------------------------------------------------------------------

function create_init($doc_root, $img_root, $image) {
	if(!file_exists($img_root.$_GET["kat"].$image.".ini")) {
		if(!copy($doc_root."/bm_gallery/image.ext.ini", $img_root.$_GET["kat"].$image.".ini")) {
				die("Fehler beim Anlegen der Datei!");
		}
	}
}

#-------------------------------------------------------------------
# Init-Datei anzeigen
#-------------------------------------------------------------------

function read_init($img_root, $image, $command) {
   $file = join("", file($img_root.$_GET["kat"].$_POST["kat"].$image.".ini")); 
   $pos_start = (strpos($file, $command) + strlen($command) + 1);
   $pos_end = (strpos($file, "/".$command) + 1);
   $file = substr($file, $pos_start, ($pos_end - $pos_start - 2));

   return $file;
} 

#-------------------------------------------------------------------
# Count Hits
#-------------------------------------------------------------------

function count_hits($img_root, $image) {
	$hits = read_init($img_root, $image, "hits");
	$hits += 1;
	
	$fp = fopen($img_root.$_GET["kat"].$image.".ini", "r");
	$fpn = fopen($img_root.$_GET["kat"].$image.".ini.tmp", "w");
	while($data = fgetcsv($fp, filesize($img_root.$_GET["kat"].$image.".ini"), "\n")) {
		if(substr($data[0], 0, 6) == "[hits]") {
			fwrite($fpn, "[hits]".$hits."[/hits]\n");
		} else {
			fwrite($fpn, $data["0"]."\n");
		}
	}
	fclose($fpn);
	fclose($fp);
	unlink($img_root.$_GET["kat"].$image.".ini");
	rename($img_root.$_GET["kat"].$image.".ini.tmp", $img_root.$_GET["kat"].$image.".ini");

}

Fortsetzung weiter unten

Bye,

WACSF
 
Zuletzt bearbeitet:
Zurück