[SOLUCIONADO Actualizar Magento - Permisos de archivos

entolium

Nuevo usuario
Hola,

Cada vez que actualizo magento (con Magento Connect Manager), me ocurre que no puedo acceder a nada. Me aparece el error 500 Internal server error.
Esto ocurre porque se cambian los permisos de los archivos.

Como no tengo acceso directamente, tengo que cambiar los permisos de los archivos via cliente FTP, y dada la ingente cantidad de archivos, el proceso es eterno.

Encontré está solución que hace esta operación en un suspiro:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Wolfcast CHMOD Scriptlet</title>
    <meta name="description" content="Wolfcast CHMOD Scriptlet Version 1.0">
    <meta name="author" content="Alexandre Valiquette (www.wolfcast.com)">

    <style type="text/css">
        div#logtext
        {
            width: 875px;
            height: 300px;
            overflow: auto;
            border: solid 1px black;
        }
        div#logtext p
        {
            white-space: nowrap;
            margin: 0px;
        }
        div#logtext p.success
        {
            color: #008000;
        }
        div#logtext p.error
        {
            color: #ff0000;
        }
    </style>
</head>

<body>

<p>
    <big><b>Wolfcast CHMOD Scriptlet</b></big><br>
    <small>Version 1.0<br>
    <a href="http://www.wolfcast.com">www.wolfcast.com</a><br></small>
</p>

<!-- START - PHP generated output -->
<?php

//---------------------------------------------------------------------------

//rChmod will recursively CHMOD $dir and it's content to $dirModes for directories and to $fileModes for files.
//$dirModes and $fileModes must start with 0 (755 become 0755 for instance).
//rChmod returns the number of failed CHMOD operations.
function rChmod( $dir = "./", $dirModes = 0755, $fileModes = 0644 )
{
    $retval = 0; //Number of failed CHMOD operations
    echo "<p style=\"margin-bottom: 0px\"><b>Log:</b></p>\r\n<div id=\"logtext\">\r\n";

    $d = new RecursiveDirectoryIterator( $dir );
    foreach ( new RecursiveIteratorIterator( $d, 1 ) as $path )
    {
        $chmodret = false;

        if ( $path->isDir() )
            $chmodret = chmod( $path, $dirModes );
        else
            if ( is_file( $path ) )
                $chmodret = chmod( $path, $fileModes );

        if ($chmodret)
            $pclassname = "success";
        else
        {
            $pclassname = "error";
            ++$retval;
        }

        echo "<p class=\"" . $pclassname . "\">" . $path . "</p>\r\n";
    }

    echo "</div>\r\n";
    return $retval;
}

//---------------------------------------------------------------------------

//Change the following line to fit your needs (path, directories CHMOD value, files CHMOD value). CHMOD values must start with 0.
$nbfailed = rChmod( "/home/miweb/", 0755, 0644 );

echo "<p style=\"margin-top: 0px\"><b>";
if ($nbfailed > 0)
{
    echo $nbfailed . " CHMOD operation(s) failed! See log above.";
}
else
    echo "No error encountered.";
echo "</b></p>\r\n";

?>
<!-- END - PHP generated output -->

<p>
    <img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Strict" height="31" width="88">
</p>

</body>
</html>
- Creamos el archivo "permisos.php" con este código
- Modificamos la linea 83, poniendo la ruta de la carpeta que queremos modificar
- Subimos el archivo a nuestra web
- Ejecutamos el archivo desde el navegador

Cuando termina, tenemos todas las carpetas y subcarpetas con el permiso 755 y todos los archivos con el permiso 644
 

cris_gn

Nuevo usuario
duda

hola
en la línea 83 ¿qué ruta tendría que ponerle si mi tienda está en raiz?
muchas gracias
cris
 

Xarlie

Super Moderador
Miembro del equipo
PHP:
$nbfailed = rChmod( "/home/miweb/", 0755, 0644 );
Me imagino que no lo tienes en el raíz... sino que cuando entras vía FTP directamente ves los ficheros, pero eso es porque no tienes acceso a otros directorios en tu hosting.

Para saber tu ruta, crea un fichero llamado: ruta.php (o cualquier cosa .php)
y pones esto:
PHP:
<?php echo $_SERVER['DOCUMENT_ROOT']; ?>
Te aparecerá la ruta donde está tu web :)
 

cris_gn

Nuevo usuario
he probado lo de la ruta y me da este resultado.

/var/www/vhosts/nombrededominio.es/httpdocs

he cambiado la ruta en el archivo permisos.php y sigue sin funcionarme el archivo

voy a seguir haciendo pruebas. gracias de todos modos
 

George_Spain

Nuevo usuario
Hola

Pero no se supone que tienen que tener todos los archivos y carpetas 777?
Tener todo con 777 es peligroso. Yo sólo tengo con permisos 777 el archivo "cálculo" de la pasarela de CECA. Los demás los tengo así:

directorios: 755
archivos: 644

Sólo los paso a 777 cuando uso magento connect, previo volcado de seguridad, eso siempre como norma, y despues volver a otorgar los permisos necesarios tras las actualizaciones.

saludos
 

diegovr

Nuevo usuario
Hola buenas, yo he cambiado ya todos los permisos pero me sigue saliendo error 500 cuando intento entrar al admin, ¿Que mas puedo hacer? Un saludo.
 
Arriba