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<?php
echo 'root: ' . $_SERVER['DOCUMENT_ROOT'] . "<br/>\n";
// muestro los ficheros del directorio /home/pantalaimon/test
$dir = opendir('/home/pantalaimon/test'); echo "$name<br/>\n";
}
// primer intento de renombramiento del fichero a.txt
echo "Prueba 1:<br/>\n";
rename( 'a.txt', 'c.txt', $dir ); // segundo intento de renombramiento del fichero a.txt
echo "Prueba 2:<br/>\n";
rename( '/home/pantalaimon/test/a.txt', '/home/pantalaimon/test/c.txt' ); ?>
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!