Ruta absoluta al copiar archivo

  • Autor Autor xcodex
  • Fecha de inicio Fecha de inicio
X

xcodex

Hola.
Tengo un script el cual copia un archivo desde un directorio a otro, funciona perfecto siempre y cuando utilice la ruta relativa y no absoluta.
¿A qué se puede deber esto?.
 
Pues se me ocurre 2 opciones:

1. La ruta absoluta es incorrecta (fallas al generarla).
2. Los típicos problemas de usar rutas de Windows, que luego en el hosting no funcionan porque el hosting usa rutas Linux.

En el segundo he visto a códigos usando "\\" como separador de carpetas al momento de concatenar una ruta base con la ruta relativa. En esos casos, al ser el hosting normalmente un Linux, lo que se usaría sería "/" y si pones el de Windows, puede dar error.

PD: ¿Te sale alguna notificación colocando PHP en modo debug?

kj
 
Pues se me ocurre 2 opciones:

1. La ruta absoluta es incorrecta (fallas al generarla).
2. Los típicos problemas de usar rutas de Windows, que luego en el hosting no funcionan porque el hosting usa rutas Linux.

En el segundo he visto a códigos usando "\\" como separador de carpetas al momento de concatenar una ruta base con la ruta relativa. En esos casos, al ser el hosting normalmente un Linux, lo que se usaría sería "/" y si pones el de Windows, puede dar error.

PD: ¿Te sale alguna notificación colocando PHP en modo debug?

kj
Utilizo linux.
A la hora de indicar el directorio de destino lo hago con la constante ___DIR___ seguido del nombre del directorio elegido.
En mi localhost, el modo debug me indica que no existe un fichero en el directorio orígen, pero en el hosting SI funciona, lo cual me parece raro.
Tendré que asumir que se trata de un problema en el servidor, lo cual me parece raro.
 
Si dices que si te corre en el hosting, entonces es posible suponer que es un problema de tu ordenador local.

En todo caso no está demás hacer una prueba sencilla, meter un exit imprimiendo la ruta absoluta del origen y a partir de allí ver que es lo que podría estar mal.

kj
 
Utilizo linux.
A la hora de indicar el directorio de destino lo hago con la constante ___DIR___ seguido del nombre del directorio elegido.
En mi localhost, el modo debug me indica que no existe un fichero en el directorio orígen, pero en el hosting SI funciona, lo cual me parece raro.
Tendré que asumir que se trata de un problema en el servidor, lo cual me parece raro.
__DIR__ retorna el directorio sin el / final, por tanto quizá estás olvidando usar el separador antes del nombre del directorio elegido
__DIR__.'/directorio_nuevo';
 
__DIR__ retorna el directorio sin el / final, por tanto quizá estás olvidando usar el separador antes del nombre del directorio elegido
__DIR__.'/directorio_nuevo';

Utilizo:
PHP:
define("DIRECTORY", "/demos/web/app/reports");
copy($nombre_fichero, DIRECTORY . "/" . $nombre_fichero);

Probe de escribir la ruta directamente en lugar de utilizar una constante (por si acaso) pero el problema persiste.
 
Finalmente logré que funcionara. 🙂
Hice:
PHP:
define("DIRECTORY", "reports");
copy($nombre_fichero, __DIR__."/".DIRECTORY . "/" . $nombre_fichero);

¡Gracias a todos!
 
Atrás
Arriba