Foros del Web » Programando para Internet » PHP »

Problema con carpetas

Estas en el tema de Problema con carpetas en el foro de PHP en Foros del Web. Hola Tengo un problema con la creacion de unas carpetas.... Lo que estoy haciendo es que hice una carpeta con el nombre de "b" y ...
  #1 (permalink)  
Antiguo 17/04/2005, 12:02
 
Fecha de Ingreso: marzo-2005
Ubicación: cd. victoria, tamps, mexico
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 0
Exclamación Problema con carpetas

Hola

Tengo un problema con la creacion de unas carpetas....

Lo que estoy haciendo es que hice una carpeta con el nombre de "b" y en esta estoy creando otra con el nombre de "algun", y la hora de crear la carpeta "b" no hay ningun problema, pero a la hora de querer hacer la carpeta "algun" dentro de "b" esta me marca error me sale el siguiente error:


Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid/gid is 131353/49475 is not allowed to access /home/domains/2foto.net/web/b owned by uid/gid 73/73 in /home/domains/2foto.net/web/b.php on line 10

Y la verdad no tengo idea de porque salga este error, ya que desde el ftp si puedo crear la carpeta "algun" dentro de la carpeta "b" pero lo que yo quiero es que la cree desde php y los permisos en chmod de la carpeta "b" estan en 777 , ¿me podrian decir cual puede ser el error?

Muchas GRACIAS!!!
  #2 (permalink)  
Antiguo 17/04/2005, 13:09
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
Hola

No es un tema de permisos a nivel de sistema de archivos, sino un bloqueo que está haciendo PHP por correr en safe mode. PHP controla que el usuario dueño del script que está corriendo sea también dueño del archivo sobre el que está operando, si esta condición no se cumple te da el error que transcribiste. Si lo sdueños no coinciden la operación se bloquea. Lo mismo pasa al operar con directorios (tu caso). Si el usuario que pretende crear un archivo o directorio, no es dueño del directorio padre, la operación se bloquea.

El error está indicando que el usuario dueño del script es el usuario 131353 del grupo 49475. Pero que el directorio sobre el que quiere operar es de el usuario 73 del grupo 73.

El tema es el siguiente, aquí hay dos usuarios en juego, tu usuario de FTP, y el usuario con el que corre el servidor web.

El usuario de FTP, es un usuario que te pertenece solo a tí, y lo usas para acceder al servicio de FTP. Mientras que el usuario del servidor Web, es un usuario más general, es el usuario con cuyos permisos corre el servidor para todos los usuarios del sistema (acuérdate que estás en un shared hosting).

Bien, como te dije, php controla que el dueño del script que corre, sea el mismo que el dueño del archivo o directorio sobre el que pretende operar. ¿Cuáles son los dueños en tu caso? Todo lo que subes pro FTP pertenece al usuario de FTP, mientras, todo lo que se crea desde un script, queda perteneciente al usuario que corre el servidor web.

Por lo tanto, los scripts que subes por FTP pertenecen al usuario 131353, mientras que los directorios o archivos que crees desde un script van apertenecer al usuario del servidor web: 73.

Esto condiciona lo siguiente, cuando creas el directorio "b" desde php, el script le asigna como dueño al directorio el usuario del servidor web (73). Un asubsiguiente operación desde el script con este directorio es imposible, porque el usuario dueño del script (tu usuario de ftp, 131353) es diferente del usuario dueño del directorio (73)

Solución, tenés que encontrar la forma de que el usuario dueño del script que opera con el sistema de archivos, sea idéntico al usuario con el que corre Apache. De esta forma, el script va a poder operar subsiguientemente sobre directorios o archivos que el mismo haya creado.

Posibles formas de solucionarlo,

A) Si tu cuenta de hosting tiene un manejador de sistema de archivos por web, que te permita subir archivos, prueba subir el script que está haciendo las operaciones por este medio. Es muy probable que el script quede perteneciendo al usuario que corre Apache, y por lo tanto se solucione tu problema.

B) Mi solución favorita, pues no dependes de nadie, hazte un script subidor de archivos para subir el script que va a operar sobre el sistema de archivos. Consulta la documentación de php sobre subida de archivos, o si quieres te doy una mano para hacerlo. Todo script que subas por este medio, va a quedar perteneciente al usuario del servidor web y esto te va a permir operar sobre archivos que pertenezcan al servidor web.

B) La peor de todas. Explicar el problema a tu proveedor de hosting, y solicitarles que cambien ellos a mano el usuario del script al mismo con el que corre el servidor web. La contra de esto es que luego, si modificas el script, vas a tener que borrarlo y pedirles que le cambien el dueño de nuevo.


Saludos!

PD: Traté de hacerlo lo menos entreverado posible, te recomeindo que leas la documentación de safe mode: http://www.php.net/manual/es/features.safe-mode.php
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #3 (permalink)  
Antiguo 17/04/2005, 13:13
 
Fecha de Ingreso: abril-2005
Mensajes: 5
Antigüedad: 12 años, 7 meses
Puntos: 0
problema de .

yo tengo un problema al intentar crear una carpeta que contenga un "." en el nombre. Si creo la carpeta desde win si k puedo, pero al hacer mkdir("carpeta.h") me dice k tururu y si hago mkdir("carpetah") si k tira.
alguna idea?
  #4 (permalink)  
Antiguo 17/04/2005, 13:24
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
xavick, los problemas noparecen tener relación, así que ¿por qué no haces un tema nuevo con tu pregunta, así no entreveramos los piolines?

En tal caso, con todo gusto trato de ayudarte. Y transcribe exactamente los mensajes de error que te dá, "turururu" no es muy significativo.

Saludos.
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #5 (permalink)  
Antiguo 17/04/2005, 13:43
 
Fecha de Ingreso: abril-2005
Mensajes: 5
Antigüedad: 12 años, 7 meses
Puntos: 0
ok

vale capicci
  #6 (permalink)  
Antiguo 17/04/2005, 13:49
 
Fecha de Ingreso: marzo-2005
Ubicación: cd. victoria, tamps, mexico
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 0
Exclamación respuesta

hola elmaster

Si creo que tiene algun problema de seguro, esque mi script funciona de la siguiente manera...........

1. Te registras
2. Los datos los agrega a tablas Sql
3. Crea la carpeta con el nombre de usuario (hasta aqui todo bien)
4. Crea una carpeta en al carpeta nueva y copia archivos ( y es aqui donde me falla)

Y es ahi cuando a la hora de accesar a la carpeta del usuario por navegador... ia sea usuario/index.php o asi.,.. es cuando me sale el error, y si necesito que me eches una mano porque no tengo ni la menor idea de solucionarlo.

Gracias
  #7 (permalink)  
Antiguo 17/04/2005, 14:00
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
A ver Ricardo, pero el origen del problema es al crear archivos o directorios dentro del directorio del usuario ¿verdad? este es el problema que describís originalmente. Bajo esta situación me imagino que el archivo index.php dentro del directorio del usuario nunca llegás a crearlo, pues SAFE MODE no te lo permite.

La descripción de la causa del problema y su solución, tal vez me quedó media larga, tratá de leer la documentación que enlacé, pero en definitiva, de todas formas, lo que hay que hacer es, todos los scripts que van a operar sobre el sistema de archivos, subirlos mediante web, para que el usuario dueño de los directorios y de los archivos creados por scripts siempre coincidan con el dueño del script que opera.

La herramienta que precisás para solucionar el problema es otro script, subidor de archivos, para "instalar" el script que va a operar sobre el sistema de archivos.

¿Si? Así que la tarea comeinza por acá: http://www.php.net/manual/es/features.file-upload.php

Si luego te surgen dudas con cómo hacer esto, pegá el grito.

Saludos.
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #8 (permalink)  
Antiguo 17/04/2005, 14:11
 
Fecha de Ingreso: marzo-2005
Ubicación: cd. victoria, tamps, mexico
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta pregunta

El script que me das para subir archivos manualmente si me va servir por lo que me explicaste pero, mira lo que pasa es que quiero que se quite el safe mode porque a la hora de que el usuario se registre, los archivos y las carpetas se crean automaticamente con su respectivo nombre de usuario ... entonces... lo que yo necesito es quitar el modo seguro para que todo salga a la normalidad porque eso que me describiste de subir el archivo si me va funcionar pero lo que yo necesito es que no tenga el seguro para que todo suba normalmente... pero con el seguro puesto no voy a poder hacer nada... y entonces la pregunta es comole quito el seguro ???
  #9 (permalink)  
Antiguo 17/04/2005, 14:16
 
Fecha de Ingreso: marzo-2005
Ubicación: cd. victoria, tamps, mexico
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 0
respuesta

Cheque el phpinfo de mi pagina y tiene el SafeMode en On... como lo puedo poner a OFF?
  #10 (permalink)  
Antiguo 17/04/2005, 14:18
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
Ricardo, piensa en lo que te he escrito, justamente lo que te estoy dando es un mecanismo para que aún bajo SAFE MODE, tu script pueda trabajar pancho en crear archivos y directorios. ¿Entiendes? Si quieres pensarlo así te describí un método para engañar a safe mode en un caso en particular bajo sus propias reglas. Lee y relee hasta que entiendas, sino también puedes simplemente aceptarlo, pero prefiero que lo entiendas.

En definitiva, lo que tienes que hacer es, con el script subidor, subir el script php con el que se registran los usuarios. Esto va a habilitar al script, y a todos los scripts que el cree a operar normalmente.

Quitar safe mode no está a tu alcance, esa es la gracia de ponerlo. Está al alcance de los administradores del sistema, en este caso tu proveedor de alojamiento. Ahora, si alojas el sitio en una máquina propia, la que puedes administrar, la historia es otra.

Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #11 (permalink)  
Antiguo 17/04/2005, 15:26
 
Fecha de Ingreso: marzo-2005
Ubicación: cd. victoria, tamps, mexico
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta

Esta bien tu funcion pero se te olvido algo....

Si MODE SAFE esta en On, como quieres que suba un archivo si se supone que al subirlo vas a ocupar de copy, y recuerda... que MODE SAFE en su lista de restricciones viene claramente tambien copy....


Es decir........ no hay ninguna solucion ???
  #12 (permalink)  
Antiguo 17/04/2005, 16:59
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
¡Ay Ricardo! ¡Hombre de poca fé! ...

Usá move_uploaded_file()
http://www.php.net/manual/es/functio...oaded-file.php

Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #13 (permalink)  
Antiguo 17/04/2005, 19:08
 
Fecha de Ingreso: marzo-2005
Ubicación: cd. victoria, tamps, mexico
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 0
Me sigue marcando el mismo error y dices ke tengo poca fe... si no crees checalo por ti mismo:

http://www.2foto.net/subidor.php
  #14 (permalink)  
Antiguo 17/04/2005, 19:14
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
Es el mismo error, pero con diferente causa.

Ahora ando corto de tiempo. En un rato te explico, pero vas tener que pedirle una mano al soporte de tu alojamiento.
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #15 (permalink)  
Antiguo 17/04/2005, 22:09
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
Ahora sí, un asadito con chorizos y ensalada me impidió responder hasta ahora

Hmmm ahora que lo veo la cosa parece ser diferente a lo que pensaba, ¿dónde cuernos estás tratando de escribir con tu script subidor? El mensaje de error dice que estás tratando de escribir en el directorio / . Ahí no vas a escribir ni en el año del golero. Tendrías que estar escribiendo sobre /home/domains/2foto.net/web/

¿Puedes postear el código del script subidor? Sería esclarecedor.

Saludos.

PD: y relájate que no te voy a cobrar por tiempo
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:02.