carpetas creadas con php, son propiedad de apache

Estamos utilizando un servidor dedicado Linux en nuestra empresa.

Cada vez que creamos una carpeta con script php, apache posee la carpeta y cada vez que tengo que conectarme al servidor a través de la raíz para cambiar el propietario al usuario y los permisos.

Pero no sé qué configuración debo cambiar para solucionar esto.

Intenté activar/desactivar el modo seguro, pero no funcionó.

Me alegraría si alguien pudiera ayudarme

Gracias por adelantado

preguntado el 04 de julio de 12 a las 08:07

¿Qué programa de archivos/FTP estás usando? -

Puede usar chmod() después de crear la carpeta. -

3 Respuestas

¿Has intentado usar el comando PHP chown y Comando PHP chmod?

Respondido 04 Jul 12, 08:07

Existen 2 maneras de hacer esto:

chown() donde puede cambiar los permisos del archivo mediante la ejecución de esa función.

o si puede mover archivos usando un FTP, puede arrastrar el archivo fuera de la raíz del documento (public_html/) y haga clic derecho -> cambiar los permisos de archivo en el archivo.

Los CHMOD son lo que quieres ver. 777 le dará a cualquier persona acceso a su archivo, que puede usar como prueba para asegurarse de que tiene permisos de archivo. No recomiendo mantener los permisos activados 777 en absoluto sin embargo.

Respondido 04 Jul 12, 08:07

Este es un problema de portabilidad y depende de la configuración de su servidor (es decir, mod_php o FCGI con SuExec).

Puedes intentar usar el chown justo después de crear el archivo, pero eso solo funcionará si sabe quién debe ser el propietario real (que no siempre es el caso). Para superar este problema, Escribí un método simple que trata de encontrar el mejor modo de archivo posible que siempre asegure la lectura y escritura (así como la ejecución de directorios) sin dar permisos excesivos:

function xChmod($path, $chmod = null) // adapted from phunction
{
    if (file_exists($path) === true)
    {
        if (is_null($chmod) === true)
        {
            $chmod = (is_dir($path) === true) ? 777 : 666;

            if (extension_loaded('posix') === true)
            {
                $user = posix_getpwuid(posix_getuid());

                if (array_key_exists('name', $user) === true)
                {
                    $chmod -= (in_array($user['name'], explode('|', 'apache|httpd|nobody|system|webdaemon|www|www-data')) === true) ? 0 : 22;
                }

            }
        }

        return chmod($path, octdec(intval($chmod)));
    }

    return false;
}

Básicamente, si omites el segundo $chmod argumento, utilizará 0777 para carpetas y 0666 para los archivos de forma predeterminada, sin embargo, si PHP se está ejecutando con un usuario no estándar, disminuirá el modo en 22, dando como resultado 0755 para carpetas y 0644 para archivos Tenga en cuenta que esto solo funcionará para archivos que ya existen, por lo que si está creando un directorio necesitará tener precauciones adicionales.

contestado el 23 de mayo de 17 a las 11:05

No cambia el propietario al usuario que quiero, pero hace que la carpeta se pueda escribir, muchas gracias. - Onur Kucukkece

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.