Warning:copy(/home/jesus/text.txt): failed to open stream: Permission denied in /var/www/html/pru.php on line 2
el escript es el siguiente:
Código PHP:
<? copy("/home/jesus/text.txt","/home/jesus/temp/text.txt") ?>
Saludos,
| |||
Problema de Upload con php4 y RedHat Enterprise 4 Hola atodos espero me puedan ayudar, yo tengo un sistema que hace upload con el comando copy de php, funcionaba corectamente en debian, pero cuando migre todo esto a red hat enterprise 4 no funciona el upload pese a que en el php.ini esta en ON y todas las carpetas y el archivo estan con perniso 777, siempre sale el error: Warning:copy(/home/jesus/text.txt): failed to open stream: Permission denied in /var/www/html/pru.php on line 2 el escript es el siguiente: Código PHP: Saludos, |
| |||
Si estás haciendo un "upload" de archivos .. deberías estar accediendo al archivo (de nombre) temporal que PHP usa al subir tus archivos en: $_FILES['como_se_llame_el_campo_file_de_tu_formulario']['tmp_name'] Y usar la función move_uploaded_file() que es la función autorizada para hacer ese movimiento. Revisa la documentación oficial de PHP al respecto: http://www.php.net/manual/en/features.file-upload.php Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Hola Cluster : sabes aplique $_FILE[] y hay algo curioso, encontre un ejemplo con un upload de un archivo tipo gif, y si lo carga pero, lo carga en la ruta donde esta el php, bueno como se ejecuto ya no importaba la ruta donde se guarde en el servidor, pero ahora cuando cambio cambie el tipo de archivo a csv para que validara, sale error de carga, trate con otros formatos y nada solo acepta gif, habra alguna configuracion en el php.ini, que esta restringiendo esto? Espero me puedas ayudar Gracias por el apoyo HOla: andinistas Te comento que todas las carpetas y archivos involucrados tienen permiso 777, creo que ya no es problema de permiso de ese tipo. |
| |||
Cita: Si indicas el còdigo que usas será lo ideal, también el tamaño de tus archivos que subes (pues PHP impone por configuración al igual que tu servidor HTTP restricciones al respecto).
Iniciado por rivert Hola Cluster : sabes aplique $_FILE[] y hay algo curioso, encontre un ejemplo con un upload de un archivo tipo gif, y si lo carga pero, lo carga en la ruta donde esta el php, bueno como se ejecuto ya no importaba la ruta donde se guarde en el servidor, pero ahora cuando cambio cambie el tipo de archivo a csv para que validara, sale error de carga, trate con otros formatos y nada solo acepta gif, habra alguna configuracion en el php.ini, que esta restringiendo esto? Espero me puedas ayudar Gracias por el apoyo HOla: andinistas Te comento que todas las carpetas y archivos involucrados tienen permiso 777, creo que ya no es problema de permiso de ese tipo. La función "move_uploaded_file()" es como un "copy()" simple .. tu, en el 2º parámetro es donde indicas el nombre y ruta donde debe quedar tu archivo. Recueda (o para que sepas), PHP cuando subes un archivo por médio de este (HTTP) deja el archivo en un lugar temporal (lo indica php.ini en su directiva: upload_tmp_dir = ....) para luego "moverlo" a su destino definitivo. Dicha función se usa en lugar de "copy()" por qué tiene permisos para "salir" a ese directorio a tomar el archivo en cuestión que estás subiendo (y no otros). Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Hola Cluster: El ejemplo ya funciona correctamente pero sigo teniendo el problema de que solo sube al directorio donde se encuentra en php, cuando le pongo una ruta de destino es donde sale en mismo error de siempre. Cita: El mismo ejemplo tambien lo corro en Debian y no tengo problemas de rutas yo puedo ponerle cualquier ruta y no sale problemas...aparentemente se tiene que configurar algo, pero no se que será..!!!failed to open stream: Permission denied in O es que el RedHat tiene otras politicas sobre este tema. Espero tus comentarios, muchas gracias |
| |||
Cita: Pero como indicas esas rutas? .. Debes indicar una ruta absoluta completa.
Iniciado por rivert Hola Cluster: El ejemplo ya funciona correctamente pero sigo teniendo el problema de que solo sube al directorio donde se encuentra en php, cuando le pongo una ruta de destino es donde sale en mismo error de siempre. El mismo ejemplo tambien lo corro en Debian y no tengo problemas de rutas yo puedo ponerle cualquier ruta y no sale problemas...aparentemente se tiene que configurar algo, pero no se que será..!!! O es que el RedHat tiene otras politicas sobre este tema. Espero tus comentarios, muchas gracias Que función usas para "copiar" el archivo? .. debes usar move_uploaded_file() Revisa los permisos de escritura del directorio destino donde pretendes copiar tu archivo. ¿Ese directorio queda bajo tu "document root" de tu servidor? (o está fuera de él .. ) Indica el código que usas completo. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Hola Cluster: Todos directorios y archivos tiene permisos 777 Te envio el codigo para que le deas una chequeada, te comento tambien que el mismo script funciona sin problemas en linux Debian. Código HTML: <body leftmargin="0" topmargin="0"> <form action="upload_proceso1.php?idsess=<? echo $idsess ?>" method="post" enctype="multipart/form-data"> <table border="1" align="center" cellpadding="0" cellspacing="0"><CAPTION> </CAPTION> <tr><td> <table align="center"> <tr> <td ><strong>Seleccione Archivo </strong></td> </tr> <tr> <td><input name="userfile" type="file" class="texto_pq"></td> </tr> <tr> <td ></td> </tr> <tr> <td ></td> </tr> <tr> <td> <div align="center"> <input type="submit" class="texto_pq" value="Enviar" style="cursor:hand"> </div></td> </tr> </table> </td> </tr> </table> </form> </body> Código PHP: |
| |||
Pero ese "/home/jesus/" donde pretendes mover el archivo està bajo el "Document Root" de tu servidor HTTP (o servidor virtual definido). Lo màs probable es que NO sea así, .. en ese caso restricciones de PHP como: open_base_dir, "safe mode" y algunas más (por lo demàs seguras) hacen que NO puedas acceder a archivos -fuera- de tu "Document Root" o directorios definidos en esas directivas (php.ini). Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Hola Cluster: /home/jesus esta fuera la ruta de Document Root esta en /var/www/html. ME fije en php.ini y los paramentros son: open_basedir = no value safe_mode = Off safe_mode_exec_dir = no value safe_mode_gid = Off safe_mode_include_dir = no value Todos estos parametros estan igual a la pc con debian que no tiene este problema. Crees que uno de ellos tengo este problema? |
| |||
Y en ese servidor usas SUexec? (donde se valida el UID y el GID del directorio/archivo a acceder). Realmente no deberías hacer con PHP lo que pretendes hacer .. NO es nada seguro .. Fijate que un "despiste" de tu programación podría hacer que un usuario por médio de algún script/aplicación "mál" diseñada acceder a archivos comprometedores del servidor. Te recomiendo una cosa: Mueve tu archivo con move_uploaded_file() hacia un directorio bajo tu "document root" y de ahí lo copias con copy() hacia tu /home/.... (y si no lo quieres más en tu "directorio temporal" lo borras con unlink() ..). Pruebalo a ver que tal. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |