Foros del Web » Programando para Internet » PHP »

Failed to open stream

Estas en el tema de Failed to open stream en el foro de PHP en Foros del Web. Me aparece este error: Warning: file(tmp/b0fmweuzwf.Rout): failed to open stream: No such file or directory in /usr/local/apache2/htdocs/siscpa/ArchivosPHP/doR.php on line 146 Mi codigo es: Código PHP: ...
  #1 (permalink)  
Antiguo 19/05/2005, 15:49
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Failed to open stream

Me aparece este error:

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


Mi codigo es:

Código PHP:
<?
require "security.php";
 
$R_path "//aguaje/siscpa/ArchivosPHP/R/rw2001/bin/Rterm.exe";
<?
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>";
}

?>
</TD><TR></TABLE>
</BODY>
</HTML>
La linea 146 es

$lines = file($r_output);
  #2 (permalink)  
Antiguo 19/05/2005, 15:49
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Alguna sugerencia de lo que esta pasando???
  #3 (permalink)  
Antiguo 19/05/2005, 16:49
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Ya lo solucione, era aki:

Código PHP:
<?
require "security.php";
 
$R_path "//aguaje/siscpa/ArchivosPHP/R/rw2001/bin/Rterm.exe";
  
$R_options_1 ="--quiet --no-restore --no-save  < ";
    
$R_options_2 =" > ";
<?
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>";
}

?>
</TD><TR></TABLE>
</BODY>
</HTML>
Aun no me sale lo que quiero, pero al menos ya no aparece el mensaje de error.

Esto sirve para conectar un programa estadistico llamado R con una pagina en php, y asi analizar lo que quieras en linea, sin necesidad de tener el programa. Mas informacion aqui:

http://steve-chen.net/R_PHP/doR.html

Lo siento, si he duplicado este tema, me parece que ya lo he puesto, pero dentro de otro tema
  #4 (permalink)  
Antiguo 19/05/2005, 16:52
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Sinceramente, a ver si la próxima vez comentamos un poco el código que posteamos, porque no nos enteramos de nada. Amén de eso, el error que tienes parece muy sencillito. El archivo que intentas leer con el file(..) no existe. Estás seguro de que existe?
Código PHP:
$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); 
Aquí creas el archivo .R, de acuerdo.
Código PHP:
$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); 
Y aquí parece que ejecutas un comando que te crea el archivo .Rout. Bueno, parece ser que ese programa no funciona bien o no lo llamas correctamente. Si tienes posibilidad de ejecutar ese comando desde una consola, prueba a ver que todo está bien con esos mismos parámetros. Si no, revisa bien todo, tendrás algún error al llamar al programa.
__________________
Mi página personal: Julián Urbano
  #5 (permalink)  
Antiguo 20/05/2005, 16:36
Avatar de Galled  
Fecha de Ingreso: marzo-2005
Ubicación: Lima
Mensajes: 254
Antigüedad: 19 años
Puntos: 0
Pues si al parecer ya no es problema con php, sino mas bien con la consola de comandos del R. Una pregunta mas, yo trabajo en un cliente, mi servidor es LInux porque tiene, como me dijo Cluster en otros post, direcciones que pertenecer a Unix. Tengo instalado el programa en el directorio veamos.... "/usr/local/apache2/htdocs/siscpa/ArchivosPHP/R/rw2001/bin/R" donde R al final es el ejecutable, mientras que mi pagina en php se encuentra en:
"/usr/local/apache2/htdocs/siscpa/ArchivosPHP/", ahora:

¿Debo tener el programa R prendido desde el servidor, para que el comando exec de php funcione?, porque yo prendo el programa pero al parecer el comando exec es el que no funciona.

gracias de antemano, saludos.
  #6 (permalink)  
Antiguo 20/05/2005, 17:47
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
No sé a qué te refieres con "prendido desde el servidor", supongo que será a si deben estar en el mism odirectorio. Creo que no. En el exec pon la ruta completa del ejecutable y mira a ver.
También es cuestión de permisos, creo. Habrá que darle permisos de ejecución al comando ese.
__________________
Mi página personal: Julián Urbano
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 13:29.