Foros del Web » Programando para Internet » PHP »

porque me dice: "Warning: is dir()..."

Estas en el tema de porque me dice: "Warning: is dir()..." en el foro de PHP en Foros del Web. Hola tengo un problema como un script y no sé como resolverlo. El caso es que quiero mostrar unas imagenes thumbnails para posteriormente verlas . ...
  #1 (permalink)  
Antiguo 19/01/2008, 17:18
 
Fecha de Ingreso: enero-2008
Mensajes: 2
Antigüedad: 16 años, 3 meses
Puntos: 0
porque me dice: "Warning: is dir()..."

Hola tengo un problema como un script y no sé como resolverlo.

El caso es que quiero mostrar unas imagenes thumbnails para posteriormente verlas . Todo me sale bien sólo que me da un Warning y no sé porque, el Warning dice así:
Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(./..) is not within the allowed path(s): (/var/www/vhosts/dominio.com/httpdocs:/tmp) in /var/www/vhosts/dominio.com/httpdocs/galleryflash.php on line 151
Código:
	<?php
			// Root directory
			$root_dir = ".";
			
			// Thumbnail Columns
			$columns = 6;
			
			// Maximal size of thumbnails in pixel
			$thumbwidth = 100;
			
			// Slideshow 0=no 1=yes
			$slideshow = 0;
					
			// --end editable region
			
			?>
			
			<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
			<meta name="author" content="Thomas Holtkötter">
			<meta name="keywords" content="EasyGallery, WingNut, projects, wingnut.net.ms">
			<style type="text/css">
			BODY{margin: 0 auto;}
			*{margin:0;padding:0;}
			.error{margin-left:8px;background-color:#999;width:100%;height:40px;font-family: Verdana, Arial, Helvetica, sans-serif;font-size:11px;font-weight:bold;}
			.select {font-family: Verdana, Arial, Helvetica, sans-serif;font-size:11px;font-weight:bold;color:#666;margin-left:8px;margin-top:8px;border: 0px;}
			.thumbnails{background-color:#FFF;border:#fff 2px solid;}
			</style>
			<script type="text/javascript" language="javascript" src="lytebox/lytebox.js"></script>
			<link rel="stylesheet" href="lytebox/lytebox.css" type="text/css" media="screen" />
			
			
			<?php
			
			// --Comenzar preprocesamiento
			$phpself = $_SERVER['PHP_SELF'];
			
				
			// tipos de archivos
			$filetypes = array("gif", "GIF", "jpg", "JPG");
			$k = sizeof($filetypes);
			for ($i=0; $i<$k; $i++)
			{
			  $filetypes[] = strtoupper($filetypes[$i]); //strtoupper convierte a mayusculas todos los elementos del array filetypes
			}
				
			// extraer imagenes de la carpeta local
			if (strpos($root_dir,'www')===0)
			{
			  $root_dir = 'http://'.$root_dir;
			}
			$local = parse_url($root_dir);//procesamos la url de "$root_dir" y la dividimos en partes dentro de un array que se llamará local
			if (strpos($root_dir,'http://')===0)
			{
			  foreach (count_chars($phpself,1) as $i=>$val)//cuenta los caracteres de la ruta y los comprueba
			  {
				if (chr($i)=='/')//Si encontramos un subdirectorio
				{
				  $root_dir = substr($local['path'],1);//guardamos en $root_dir toda la ruta
				  for ($j=1;$j<$val;$j++)
					$root_dir='../'.$root_dir;
				}
			  }
			  if (strpos($root_dir,$local['path'])===0)
			  {
				$root_dir = ".";
			  }
			}
			
			// Escaneo del directorio para ver las carpetas y comprobar si contienen archivos de imagen
			if (!is_dir($root_dir))//si $root_dir no es un directorio-ERROR
			{
			  echo "<div align='center' class=\"error\">";
			  echo "<span class=\"content\"><br>ERROR: folder not found.</span>";
			  echo "</div>";
			  exit();
			}	
			$root_handle = opendir($root_dir);
			while ($dirname = readdir($root_handle))
			{
				if ($dirname!='system'){
					// strcmp(a,b) Comparacion de cadenas, 
					// Devuelve < 0 si cadena a es menor que cadena b;
					// > 0 si cadena a es mayor que cadena b
					// y 0 si son iguales.
					$var1 = strcmp($dirname,'.');
					$var2 = strcmp($dirname,'..');
					
line 151	$var3 = is_dir($root_dir.'/'.$dirname);	  
					if (($var1!=0) && ($var2!=0) && ($var3==1))
					{
						
						$dir_handle = opendir($root_dir.'/'.$dirname);
						$postmp = 0;
						while ($filename = readdir($dir_handle))
						{
							for ($i=0;$i<sizeof($filetypes);$i++)
							{
								$postmp = strpos($filename, $filetypes[$i]);
								if ($postmp>0)
								{
									$folders[] = $root_dir.'/'.$dirname;
									break 2;
								}
							}
						}
						closedir($dir_handle);
					}	
				}
			}		
			if (!$folders)
			{
			  echo "<div class=\"error\">";
			  echo "<span class=\"content\"><br>ERROR: Searched folders don't contain any image! Please change the \$root_dir.</span>";
			  echo "</div>";
			  exit();
			}
			$ordner = $ref;				 
			// Exploración de los directorios de archivos de imagen
			if (is_dir($ordner)){
			  $dir_handle = opendir($ordner);
			  while ($filename = readdir($dir_handle))
			  {
				for ($i=0; $i<sizeof($filetypes); $i++)
				{
				  $pos = strpos($filename, $filetypes[$i]);
				  $var1 = strcmp($filename,'.');
				  $var2 = strcmp($filename,'..');
				  $var3 = is_file($ordner.'/'.$filename);
				  if (($var1 != 0) && ($var2 != 0) && ($var3 == 1) && ($pos > 0))
				  {
					$files[] = $filename;
				  }
				  if ($filename=="thumbnails")
				  {
					$thumbs = 1;
				  }
				}
			  }
			  sort($files);
			  $size = sizeof($files);
			  closedir($dir_handle);
			  closedir($root_handle);
			}
			else
			{
			  echo "<div class=\"error\">";
			  echo "<span class=\"content\"><br>ERROR: folder not found.</span>";
			  echo "</div>";
			  exit();
			}
		?>		
		
		<?php
			
			$xpos=8;
			$ypos=6;
			$count = 0;
			$newthumbs = false;
			$divheight = ceil(count($files)/$columns) * ($thumbwidth+6) + 6;
			echo "<table height=$divheight width=100% cellspacing=0 cellpadding=0 ><tr valign=top><td>\n";
			for ($y=0;$y<count($files);$y++)
			{
			  $tn_src = $ordner."/thumbnails/".$files[$count];
			  if (file_exists($tn_src))
			  { 
				$image = GetImageSize($tn_src);
				if ($image[0]==$image[1]){}
				elseif ($image[0]<$image[1]) $xpos += intval(($image[1]-$image[0])/2);
				else $ypos += intval(($image[0]-$image[1])/2);
				echo "<div id=\"livethumbnail\" style=\"left:".$xpos."px; top:".$ypos."px; position:relative; zindex:1;\">";
				if($slideshow!=1){
				  echo "<a href=\"".$ordner."/".$files[$count]."\" rel=lytebox[".$ordner."]>";
				}
				else{
				  echo "<a href=\"".$ordner."/".$files[$count]."\" rel=lyteshow[".$ordner."]>";
				}
				echo "<img src=\"$tn_src\" class=\"thumbnails\" alt=\"$files[$count]\" style=\"width:$image[0]; height:$image[1]; left:0px; top:0px; position:absolute;\"></a></div>\n";
				if ($image[0]==$image[1]){}
				elseif ($image[0]<$image[1]) $xpos -= intval(($image[1]-$image[0])/2);
				else $ypos -= intval(($image[0]-$image[1])/2);
			  }
			  else
			  {
				$modules = get_loaded_extensions();
				if(!in_array("gd", $modules)){
				  echo "<div class=\"error\">";
				  echo "<span class=\"content\"><br>Your Webserver doesn't provide the GD library, which is required to create thumbnails. Please create and add your thumbnails manually.</span>";
				  echo "</div>";
				  exit();
				}
				if(createthumb($ordner,$files[$count],$thumbwidth))
				{
				  echo "$files[$count] created.<br>";
				  $newthumbs = true;
				}
				else
				{
				  echo "<div class=\"error\">";
				  echo "<span class=\"content\"><br>Thumbnail Creation failed.</span>";
				  echo "</div>";
				  exit();
				}
			  }
			  $count++;
			  if($count%$columns==0)
			  {
				$ypos += $thumbwidth+6;
				$xpos = 8;
			  }
			  else
			  {
				$xpos += $thumbwidth+6;
			  }
			}
			if($newthumbs)
			{
			  echo "<script>location.reload()</script>";
			}	
			echo "</td></tr></table>\n";
			//echo '<p><a href=http://www.palacesestateagency.com/index.php style=margin-left:8px>Go to home</a></p>';
			// dont even think about removing this link!
			echo "\n</body>";
			
			
			//Funcion para crear los thumbnails
			function createthumb($name,$file,$maxsize)
			{
			  list($width, $height) = getimagesize("$name/$file");
			  $width = min($width, $height);
			  $tn = imagecreatetruecolor($maxsize, $maxsize);
			  $image = imagecreatefromgif("$name/$file");
			  imagecopyresampled($tn, $image, 0, 0, 0, 0, $maxsize, $maxsize, $width, $width);
			  imagegif($tn, "$name/thumbnails/$file", 70);
			  return true;
			}
			?>
Por favor ayudadme

por si sirve de algo, en mi PC con el xammp me funciona bien pero al subirlo me da el error. GRACIAS

Última edición por rmlesly; 19/01/2008 a las 17:33
  #2 (permalink)  
Antiguo 19/01/2008, 18:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: porque me dice: "Warning: is dir()..."

El problema es que tu PHP esta configurado con la directiva open_basedir, con lo que no vas a poder abrir archivos que esten fuera de la ruta que tengas configurada.

Para resolver esto debes ponerte en contacto con tu hosting, y pedirles que te habiliten el acceso de lectura/escritura a la carpeta que quieres leer.

Saludos.
  #3 (permalink)  
Antiguo 19/01/2008, 19:33
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: porque me dice: "Warning: is dir()..."

exacto no tienes permiso para acceder a esa carpeta pero ojo menos mal q estaba trabajando con algo parecido hoy asi q prueba colocando esta ruta

(/var/www/vhosts/dominio.com/httpdocs/la carpeta donde estan los thumbails

proba y me dices
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:36.