Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2014, 07:25
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 4 meses
Puntos: 32
Problemas con contexto en rename de PHP

Buenas,

La función rename de php me está trayendo de cabeza y no logro entender por qué.

Tengo un proyecto PHP en un virtualhost el directorio /home/pantalaimon/prog/web/php/project y quiero renombrar unos ficheros que están fuera del directorio del virtualhost:
/home/pantalaimon/test/a.txt
/home/pantalaimon/test/b.txt

He hecho un código de prueba simplificado para que podáis localizar más facilmente el error:
Código PHP:
Ver original
  1. <?php
  2.         echo 'root: ' . $_SERVER['DOCUMENT_ROOT'] . "<br/>\n";
  3.         // muestro los ficheros del directorio /home/pantalaimon/test
  4.         $dir = opendir('/home/pantalaimon/test');
  5.         while( $name = readdir( $dir ) ) {
  6.             echo "$name<br/>\n";
  7.         }
  8.         // primer intento de renombramiento del fichero a.txt
  9.         echo "Prueba 1:<br/>\n";
  10.         rename( 'a.txt', 'c.txt', $dir );
  11.         // segundo intento de renombramiento del fichero a.txt
  12.         echo "Prueba 2:<br/>\n";
  13.         rename( '/home/pantalaimon/test/a.txt', '/home/pantalaimon/test/c.txt' );
  14.     ?>
La salida es la siguiente:
Cita:
root: /home/pantalaimon/prog/web/php/project
b.txt
.
a.txt
..
Prueba 1:

Warning: rename(): supplied resource is not a valid Stream-Context resource in /home/pantalaimon/prog/web/php/project/index.php on line 8

Warning: rename(a.txt,c.txt): No such file or directory in /home/pantalaimon/prog/web/php/project/index.php on line 10
Prueba 2:
Se puede ver que en caso de poner la ruta absoluta no hay problema, pero a la hora de usar el contexto sí.

¿Qué es lo que hago mal en el contexto?

Un saludo y gracias!
__________________
github.com/xgbuils | npm/xgbuils