Foros del Web » Programando para Internet » PHP »

Mensaje de Error (Permission)

Estas en el tema de Mensaje de Error (Permission) en el foro de PHP en Foros del Web. Tengo estos mensajes de error pero no se porque ocurren: Warning: fopen(tmp/xig70bcftj.R): failed to open stream: Permission denied in /usr/local/apache2/htdocs/siscpa/ArchivosPHP/doR.php on line 127 Warning: fwrite(): ...
  #1 (permalink)  
Antiguo 19/04/2005, 18:16
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Mensaje de Error (Permission)

Tengo estos mensajes de error pero no se porque ocurren:


Warning: fopen(tmp/xig70bcftj.R): failed to open stream: Permission denied in /usr/local/apache2/htdocs/siscpa/ArchivosPHP/doR.php on line 127

Warning: fwrite(): supplied argument is not a valid stream resource in /usr/local/apache2/htdocs/siscpa/ArchivosPHP/doR.php on line 128

Warning: fclose(): supplied argument is not a valid stream resource in /usr/local/apache2/htdocs/siscpa/ArchivosPHP/doR.php on line 129

Warning: file(tmp/xig70bcftj.Rout): failed to open stream: No such file or directory in /usr/local/apache2/htdocs/siscpa/ArchivosPHP/doR.php on line 145

alguien me puede ayudar??
  #2 (permalink)  
Antiguo 19/04/2005, 19:19
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... Permisos... checa cdmod() http://mx.php.net/manual/es/function.chmod.php
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 20/04/2005, 08:26
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Parece que mi problema comienza con esto

$r_name = random_str(10);
$r_input = $temp_dir."/".$r_name.".R";
$r_output = $temp_dir."/".$r_name.".Rout";

$fp = fopen($r_input,"w");
fwrite($fp,$new_code);
fclose($fp);

es que crea un archivo, ¿como le establezco los permisos?
  #4 (permalink)  
Antiguo 20/04/2005, 08:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y que valores tienes en $r_input y $r_output ?

Según parece .. pretendes hacer referencia a un archivo que está fuera de tu "DocumentRoot" (/usr/local/apache2/htdocs/siscpa/ ... o /usr/local/apache2/htdocs/ .. o similar)

Deberías concretar la ruta absoluta a ese $tmp_dir .. (que no se de donde sale) ... tal vez /tmp .. si cuelga del raiz de ese servidor ..

No sé si tienes acceso a ese directorio (/tmp) pero debería tener permios de lectura/escritura. No sé por qué modificas ahí mismo el nombre del archivo .. Deberías concretar que estás haciendo .. ¿trabajas con archivos que subes por un "upload" HTTP?


Un saludo,
  #5 (permalink)  
Antiguo 20/04/2005, 17:48
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Hola, gracias por el apoyo.

Al comienzo establezco la variable:

Código PHP:
$temp_dir "tmp"
y yo ya tengo creada la carpeta en el mismo lugar que en la pagina php (en este caso se llama doR.php)

Acabo de establecer los permisos de lectura y escritura para la carpeta temp y al menos mejoro un poco me salio un mensaje de error:


Warning: file(tmp/rjdliibcam.Rout): failed to open stream: No such file or directory in /usr/local/apache2/htdocs/siscpa/ArchivosPHP/doR.php on line 146

y la linea 146 es:

Código PHP:
$lines file($r_output); 
Que esta en el siguiente codigo:

Código PHP:
<?
function random_str($size

        
$randoms = array( 
                
0123456789ab
                
cdefghijklmn
                
opqrstuvwxy
        
); 

        
srand ((double) microtime() * 1000000); 

        for(
$i 1$i <= $size$i++) 
            
$text .= $randoms[(rand(0,35))]; 

        return 
$text


function 
get_file_name($text)
{
  
$temp1 explode("file=\"",$text);
  
$fname explode("\"",$temp1[1]);

  return 
$fname[0];
}

if (!
$r_code || $r_code == "")
{
  echo 
"<font color=red>No se ha ingresado ningun codigo!</font><p>";
  echo 
"</TD></TR></TABLE></BODY></HTML>";
  exit;
}

$old_code explode(chr(10),$r_code);
$total count($old_code);
$new_code "";

for (
$i=0;$i $total$i++)
{
  
$j $i+1;
  
$old $old_code[$i];

  
check_bad($old,$j);

  if (
ereg("$graphic",$old_code[$i]))
  {
     
$gfile_name get_file_name($old_code[$i]);
     
$gfile_name random_str(4).$gfile_name;
     
$new_code .= $graphic."(file=\"$temp_dir/$gfile_name\") \n";
  }
  else
     
$new_code .= $old_code[$i]."\n";
}

$r_name random_str(10);
$r_input $temp_dir."/".$r_name.".R";
$r_output $temp_dir."/".$r_name.".Rout";

$fp fopen($r_input,"w");
fwrite($fp,$new_code);
fclose($fp);

$rsoft $R_path;
$command "$rsoft $R_options_1 $r_input $R_options_2 $r_output";
$exec_result exec($command,$result,$error);

$lines file($r_output);
$total count($lines);

if (
$error)
{
  echo 
"<font color=red>Error: Algo sucedio mal! Por favor revise la salida!</font>";
  echo 
"<HR>Salida del programa R : <P><HR>";

  for (
$i=0;$i $total;$i++)
    echo 
$lines[$i]."<BR>";

  exit;
}

echo 
"Salida del programa R¡G<P><HR>";

$to_do_plot 0;

for (
$i=0;$i $total;$i++)
{
  
$line $lines[$i];

  if (
ereg("$graphic",$line))
  {
    echo 
$line."<BR>";

    
$gfile_name get_file_name($line);
    
$to_do_plot 1;
  }
  else if (
ereg("dev.off",$line))
  {
    echo 
$line."<BR>";

    if (
$to_do_plot == 1)
    { 
      echo 
"<P><IMG SRC=\"$gfile_name\"><P>";
      
$to_do_plot 0;
    }
  }
  else if (
ereg("null device",$line))
    continue;
  else if (
ereg("          1",$line))
    continue;
  else
    echo 
$line."<BR>";
}

?>
Gracias de antemano.

Saludos.
  #6 (permalink)  
Antiguo 21/04/2005, 08:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
$temp_dir = "tmp";

y yo ya tengo creada la carpeta en el mismo lugar que en la pagina php (en este caso se llama doR.php)
Si es así .. deberías indicar bien sea con ruta absoluta completa o relativa algo tipo:
Código PHP:
$temp_dir "./tmp"
ó
Código PHP:
$temp_dir "/usr/local/apache2/htdocs/siscpa/ArchivosPHP/tmp"
Supongo que tu directorio "tmp" que indicas está en la ruta absoluta (2°) que ahí indico? ..


Un saludo,
  #7 (permalink)  
Antiguo 21/04/2005, 09:02
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Y no tiene nada que ver que le ponga asi ¿?:

Código PHP:
$r_name random_str(10);
$r_input $temp_dir."/".$r_name.".R";
$r_output $temp_dir."/".$r_name.".Rout"
???
  #8 (permalink)  
Antiguo 21/04/2005, 09:08
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Si Cluster, mi directorio tmp se encuentra en:

"/usr/local/apache2/htdocs/siscpa/ArchivosPHP/tmp"
  #9 (permalink)  
Antiguo 21/04/2005, 09:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Galled
Si Cluster, mi directorio tmp se encuentra en:

"/usr/local/apache2/htdocs/siscpa/ArchivosPHP/tmp"
Pues entonces usa:

$temp_dir = "/usr/local/apache2/htdocs/siscpa/ArchivosPHP/tmp";

También podría ser:

$temp_dir = $_SERVER['DOCUMENT_ROOT']."/ArchivosPHP/tmp";

O similar . .no sé exactamente donde cae tu "DOCUMENT ROOT" en tu servidor . .puedes hacerle un echo a esa variable para confirmarlo. Usando dicha variable, si migras tu aplicación a otro servidor no tendras que cambiar nada de rutas ..

Un saludo,
  #10 (permalink)  
Antiguo 21/04/2005, 10:03
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Bueno, aun con:

$temp_dir = "tmp";

o

$temp_dir = "/usr/local/apache2/htdocs/siscpa/ArchivosPHP/tmp";

Me sigue saliendo un ùnico mensaje:

Warning: file(tmp/a8fd34hs9u.Rout): failed to open stream: No such file or directory in /usr/local/apache2/htdocs/siscpa/ArchivosPHP/doR.php on line 146

Lamento no haber comenzado por esto, pero...:

En sí el proceso es el siguiente, tengo una pagina HTML con un simple FORM de la forma:

Código PHP:
<FORM action="doR.php" method="post">
<
TEXTAREA cols=70 rows=15 name="r_code"></TEXTAREA>
<
p>
<
INPUT TYPE="submit" VALUE="Submit">&nbsp;&nbsp;
<
INPUT TYPE="reset" VALUE="Clear">
</
FORM
y lo manda a un programa estadistico llamado R, donde el ejecutable se encuentra en:

/usr/local/apache2/htdocs/siscpa/ArchivosPHP/R/rw2001/bin/

(trabajo con Windows XP)

se supone que genera un archivo de nombre aleatorio con extension ".R" y luego escribe los comandos ingresados en el FORM y luego los analiza y los analisis estadisticos los bota en otro archivo con el mismo nombre aleatorio con extension ".Rout" pero parece que esta ultima opcion es la que falla por el mensaje de error antes mencionado.

Alguna sugerencia / ayuda ???

saludos, maestro Cluster
  #11 (permalink)  
Antiguo 21/04/2005, 10:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ahora si que me perdí ...


Esta ruta:
/usr/local/apache2/htdocs/siscpa/ArchivosPHP/R/rw2001/bin/

Seguro que es de windows XP? .. no sería c:/ .... o similar?
(trabajo con Windows XP)

Esa función:
random_str($size)

se ejecuta correctamente? ...
file(tmp/a8fd34hs9u.Rout): failed to open stream: No such file or directory

Puedes verificar que ese archivo de ese nombre (textual .. respetando mayusculas y minusculas) está en esa ruta? ..

Tu servidor es Windows o Linux? .. por que todas las rutas que indicas son tipo UNIX (LInux..) pero luego hablas algo de Windows XP?...

Un saludo,
  #12 (permalink)  
Antiguo 21/04/2005, 11:03
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Bueno estoy trabajando en Windows XP y mi servidor tambien lo es, pero no trabajo directamente desde el servidor, mas bien, tengo un ambiente que el servidor me ha dado y alli tengo el paquete estadistico R y todas las paginas en php. Pero cada vez que me sale un error me salen los mensajes de error como si tuviera una coneccion a Apache, de alli supongo que debe ser asi, y concuerda porque cuando le pongo:

/usr/local/apache2/htdocs/siscpa/ArchivosPHP/tmp

que esta en el servidor, tambien funciona.

Al parecer el random_str($size) funciona, y dentro de la carpeta tmp ya tengo varios archivos con nombres aleatorios (con letras minusculas porque esta especificado)

Código PHP:
function random_str($size

        
$randoms = array( 
                
0123456789ab
                
cdefghijklmn
                
opqrstuvwxy
        
); 

        
srand ((double) microtime() * 1000000); 

        for(
$i 1$i <= $size$i++) 
            
$text .= $randoms[(rand(0,35))]; 

        return 
$text

con extension ".R" (textualmente), pero ni uno con extensiòn ".Rout"

que esta pasando???

gracias de antemano, saludos
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 02:38.