[Php-avanzado] Guardar archivo en directorio
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Sab Oct 18 00:04:08 ART 2008
Hola Cecilia,
los permisos de creación por default de un directorio dependen de la
configuración de cada sistema.
Desconozco detalles de como MS Windows los maneja, así que no sabría
decirte qué hacer con exactitud. Sé tan poco de esto que creía que todo
lo que creabas sería escribible por los scripts y por los usuarios...
Sin embargo, una práctica habitual es crear el directorio manualmente
con los permisos que hagan falta, y luego escribir el script asumiendo
que el directorio existe.
(más abajo te comento algo sobre esto)
Por otra parte, la función para cambiar permisos es chmod(). El el
manual están detallados los parámetros que necesita, pero la verdad es
que no sé si funciona en MS Windows.
El vie, 17-10-2008 a las 21:39 -0300, María Cecilia escribió:
> Envié el anterior sin el código :(
>
>
> Consulta para quien pueda ayudarme:
>
> No puedo copiar un archivo dentro del directorio, el directorio se crea con
> permisos de sólo lectura, entonces me da un error diciendo que no tengo
> permisos. No se cómo cambiar esos permisos (los del dir). Aquí va el código:
>
> <?php
> if(!isset($_POST["guardar"])){
> ?>
> <body>
> <form method="POST" action="" name="formu" id="formu">
> <input type="file" id="a" name="a">
> <textarea name="texto" id="texto" cols="30" rows="4"><?php
> print ($v) ?>Escriba aqui el texto que desea agregar al
> archivo</textarea><br>
> <input type="submit" name="guardar" id="guardar"
> value="Guardar">
> </form>
> <?php
> }
> else{
> $tex=$_POST["texto"];
> $arch=$_POST["a"];
> mkdir('cursophp2');
Nota: la creación del directorio fallará siempre, excepto la primera
vez. Falla porque el directorio ya existe.
Podés chequear con file_exists() si existe o no, y si no existe
crearlo.
Por otra parte: estás segura que no falla al querer crear el directorio
en vez de al subir el archivo???
Sería bueno que nos copies y pegues el mensaje de error.
> $f=fopen($arch, "a+"); //crea el archivo si no existe, con a+ le doy
> permisos de lect y esc. Y agrega la información al contenido que ya tiene el
> archivo
> fwrite($f, $tex, strlen($tex)); //escribe $tex al archivo $f, se
> escriben tantos bytes como indica el tercer parámetro. strlen obtiene la
> longitud de la cadena
Acá estás mezclando: o escribís un archivo abierto con fopen() con
fwrite(), o copiás un archivo existente al directorio que te haga falta.
En este caso el copy() falla pero no por falta de permisos, sino porque
estás copiando un archivo que no existe (salvo que tengas la suerte de
que en el textarea se escriba justo la ruta completa de un archivo
existente)
> copy($arch, '\wamp\www\Practico3\cursophp2');
> print ("el directorio se creo exitosamente");
> }
> ?>
>
>
> Gracias!!
Por nada!
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado