Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: overxfl0w13 en 2 Junio 2012, 15:27 pm



Título: Guardar archivo en directorio
Publicado por: overxfl0w13 en 2 Junio 2012, 15:27 pm
Tengo un formulario con textarea. Luego abro un archivo en el cual escribo el texto del formulario y eso, procedimiento normal vamos..

El problema es que quiero guardar ese archivo en un directorio específico del servidor y no en el mismo donde se encuentra el PHP.

El php se encuentra en raiz/archivo.php
Y el directorio donde quiero guardarlo es raiz/codigos/nombredelarchivo.txt

¿ Alguna idea ?


Título: Re: Guardar archivo en directorio
Publicado por: engel lex en 2 Junio 2012, 15:59 pm
Código
  1. fopen("codigos/nombredelarchivo.txt", "r");

no te sirve?


Título: Re: Guardar archivo en directorio
Publicado por: overxfl0w13 en 2 Junio 2012, 18:41 pm
Código
  1. fopen("codigos/nombredelarchivo.txt", "r");

no te sirve?

No, ya lo he probado tio y no sé porque no da resultado :S.

Gracias :)


Título: Re: Guardar archivo en directorio
Publicado por: engel lex en 2 Junio 2012, 19:04 pm
te da error? hace algo? postea parte del codigo D:

has un
Código:
print_r(scan("/"));
a ver si aunque sea está parado correctamente en la carpeta


Título: Re: Guardar archivo en directorio
Publicado por: ~ Yoya ~ en 2 Junio 2012, 19:30 pm
para ir a la raiz, tienes que agregar un slash, adelante y luego comienzas a escalar directorio, ejemplo:

Citar
/home/usuario/www/html

Saludos.


Título: Re: Guardar archivo en directorio
Publicado por: engel lex en 2 Junio 2012, 19:36 pm
Código:
para ir a la raiz, tienes que agregar un slash, adelante y luego comienzas a escalar directorio

nope, no funciona asi en php, eso es en html... en php usas "../" para bajar de directorio y para ir a la raiz tienes que medir D:


overxfl0w13
corrijo mi codigo, te lo di mal, es

Código

ahi vez los archivos que hay en tu directorio, usa eso como guia XD no me acuerdo las otras funciones, pero segudo en php.net las consigues junto con scandir


Título: Re: Guardar archivo en directorio
Publicado por: ~ Yoya ~ en 2 Junio 2012, 19:56 pm
Código:
para ir a la raiz, tienes que agregar un slash, adelante y luego comienzas a escalar directorio

nope, no funciona asi en php, eso es en html... en php usas "../" para bajar de directorio y para ir a la raiz tienes que medir D:

LOL

Cuando vayas a decir algo como eso, por lo menos agrega fuentes directamente desde la documentación de PHP. Porque lo único que haces es confundir.

Código
  1. <?php
  2.  
  3. ?>
  4.  
Código:
yoya@Debian:~/www/public/pruebas$ php xd.php
Array
(
    [0] => .
    [1] => ..
    [2] => .pulse
    [3] => .pulse-cookie
    [4] => bin
    [5] => boot
    [6] => dev
    [7] => etc
    [8] => home
    [9] => initrd.img
    [10] => lib
    [11] => lost+found
    [12] => media
    [13] => mnt
    [14] => opt
    [15] => proc
    [16] => root
    [17] => run
    [18] => sbin
    [19] => selinux
    [20] => srv
    [21] => sys
    [22] => tmp
    [23] => usr
    [24] => var
    [25] => vmlinuz
)

Tienes que agregarle slash al principio, para ir directamente a la raiz, luego avanzas hasta el DOCUMENT_ROOT...

Saludos.


Título: Re: Guardar archivo en directorio
Publicado por: overxfl0w13 en 2 Junio 2012, 21:35 pm
Gracias a los 2, el problema es que no es en local sino ya en servidor. Y creo que la cosa no funciona igual no? :S.

EDIT: Ya está resuelto, el problema era que ponía barra delante del directorio raiz :)
Un saludo :)


Título: Re: Guardar archivo en directorio
Publicado por: engel lex en 4 Junio 2012, 05:04 am
@yoya XD sorry XD tienes razón de apelar documentación XD


Título: Re: Guardar archivo en directorio
Publicado por: WHK en 4 Junio 2012, 15:57 pm
Código
  1. <?php file_put_contents(dirname(__file__).'/codigos/test.txt', 'algo');
Recuerda hacer un mkdir para crear el directorio nuevo en caso de que este no exista con un 0755 y con modo recursivo en true, en caso de fallar retornas un mensaje de error.

En ves de utilizar scandir pueden usar mejor glob() para evitar el retorno de . y .., y todo en un solo array glob('*'); o si no glob(dirname(__file__).'/*') para evitar mostrar otros directorios en el caso de que se esté ejecutando desde un php padre y el script real esté incluido solamente, recordar que __file__ te da la ruta real del archivo aunque este esté incluido pero hay otras funciones que para ellos el directorio local es el archivo principal que está incluyendo lo demás y es un problema al momento de trabajar con directorios estructurados como por ejemplo los sistemas modulares.