Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/04/2005, 12:09
elmaster
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 19 años
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