[Php-avanzado] Guardar archivo en directorio

María Cecilia mariaceciliagarcia en speedy.com.ar
Sab Oct 18 12:58:34 ART 2008


Hola Leo, este es el error:

Warning: copy(\wamp\www\Practico3\cursophp2) [function.copy]: failed to open
stream: Permission denied in C:\wamp\www\Practico3\TP3_Ej2.php on line 25

Algunas aclaraciones:
1) la línea 25 que indica el error es la línea del copy($arch,
'\wamp\www\Practico3\cursophp2');
2) tal como dice Rosario, había probado crearlo con medir('cursophp2', 0777)
pero el error seguía.
3) también en un momento, como vos decís, al ejecutarlo por segunda vez me
dio el error que indica que el directorio ya existe, entonces ahora lo borro
antes de ejecutarlo (debería agregar la línea que pregunta si existe o no el
dir)
4) y por último, sí, elijo siempre un archivo existente.

Espero con esto me puedan ayudar a descubrir por qué no me copia el archivo
en el directorio.
Gracias otra vez!!!
Saludos,
Cecilia




-----Mensaje original-----
De: php-avanzado-bounces en pato2.fi.mdp.edu.ar
[mailto:php-avanzado-bounces en pato2.fi.mdp.edu.ar] En nombre de Leonardo
Tadei - Pegasus Tech Supply
Enviado el: viernes, 17 de octubre de 2008 23:04
Para: Lista del curso de PHP Avanzado
Asunto: Re: [Php-avanzado] Guardar archivo en directorio

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>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');
> }	
> ?>	
>  
> 
> 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

_______________________________________________
Php-avanzado mailing list
Php-avanzado en pato2.fi.mdp.edu.ar
http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado

E-mail clasificado por el Idenfificador de Spam Inteligente.
Para modificar la categoría clasificada acceda a su webmail

Este mensaje ha sido verificado por el E-mail Protegido.
Antivirus actualizado en 18/10/2008 / Versión: 0.93.1/8442



__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 3534 (20081018) __________

ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com

 

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 3534 (20081018) __________

ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
 



Más información sobre la lista de distribución Php-avanzado