Faltan permisos de escritura en el directorio pub / static cuando se ejecuta la configuración bin / magento: actualización

19

El día anterior, actualicé un nuevo módulo y estaba funcionando normalmente. Ahora, cuando corro bin/magento setup:upgrade, recibo la siguiente excepción. Intenté establecer permisos en 777 (o 770) para la pubcarpeta en Magento 2 pero no funciona.

  [Excepción]
  Faltan permisos de escritura en los siguientes directorios: 'pub / static'

Thao Pham
fuente
¿lograste resolver este problema? Si es así, por favor publique la solución.
Reena Parekh
¿Tienes el mismo problema?
Thao Pham
Sí, estoy enfrentando el mismo problema. ¿Cómo lo resolviste?
Reena Parekh
Comento un código de línea en el núcleo. ¿Quieres hacer lo mismo que yo?
Thao Pham
1
publiqué mi relsove en la publicación a continuación. Puedo intentarlo
Thao Pham

Respuestas:

30

TL; DR truncar pub/staticcarpeta.


Para mí, tenía una instalación anterior, que probablemente tenía algunos enlaces simbólicos y archivos antiguos que ya no existen.

El problema checkInstallationFilePermissionses que verifica los permisos de forma recursiva. Archivos y carpetas. Me faltaba un enlace simbólico, y eso devolvió falso en el cheque si se puede escribir.

Cómo depurar:

  1. setup/src/Magento/Setup/Model/FilePermissions.php

  2. Ir a la línea 143 en el método checkRecursiveDirectories

  3. Agrega las líneas var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. Volver a correr bin/magento setup:upgrade

ahora verá lo que está realmente mal y podrá solucionarlo. Personalmente elimino todopub/static , este será contenido generado automáticamente, por lo que no debe preocuparse por eso.

Michal-sk
fuente
1
Eliminé pub / static por completo, después de ejecutar el programa de instalación: actualice la única carpeta dentro de pub / static es la carpeta __requirejs.
Faltan CSS
¿Cómo puedo restaurar todo en pub / static?
Lachezar Raychev
2
todo iba tan bien ... :) realmente comienzo a despreciar este marco
Lachezar Raychev
3
Si elimina el contenido de pub / static, asegúrese de no eliminar pub / static / .htaccess ya que es parte de la base del código y no se recrea: github.com/magento/magento2/tree/2.0/ pub / static
mttjohnson
Perfecto! Esto fue todo ..
Arvind07
11

Me encontré con este error en el desarrollo debido a un enlace simbólico roto.

Creé un archivo en el view/frontend/webdirectorio de un módulo que, en developermodo, se implementó en el pub/staticdirectorio utilizando un enlace simbólico que apuntaba al directorio del módulo donde se almacena el archivo original.

En algún momento del desarrollo, eliminé el archivo de mi módulo, pero el enlace simbólico todavía existía al pub/staticseñalar un archivo que ya no existía. Espero que este también sea el caso si hubiera cambiado el nombre de uno de los archivos.

Si un sitio está en productionmodo y se ha bin/magento setup:static-content:deployejecutado, eso copia los archivos en el pub/staticdirectorio en lugar de crear enlaces simbólicos.

Para encontrar este enlace simbólico roto, ejecuté un comando desde el shell

find -L . -type l

Eliminar el enlace simbólico roto resolvió el problema (por ejemplo, usar find -L . -type l -exec rm {} \;).

mttjohnson
fuente
Esta fue la respuesta a mi problema también, gracias mttjohnson!
Joshua Soileau
4

Dentro de su directorio raíz de Magento ejecute los siguientes comandos y su problema debería desaparecer:

$ rm -rf pub/static/*
$ php bin/magento setup:static-content:deploy

Trabajó para mi.

medina
fuente
Esto eliminará el .htaccessarchivo también. Necesitas .htaccessarchivo.
Adarsh ​​Khatri
2

Debe configurar los permisos como se describe en la documentación oficial: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html

Mage2.PRO
fuente
1
¿Pueden los permisos reales solo causar en caso de que la URL cambie?
rob3000
Lo intento de nuevo pero no funciona
Thao Pham
No olvide hacerlo de forma recursiva en subdirectorios: pub, pub / static, etc.
Mage2.PRO
la propiedad es tan importante como los permisos; consulte el enlace anterior y también devdocs.magento.com/guides/v2.0/install-gde/prereq/… . Debes tener dos usuarios; un usuario local y el usuario del servidor web
Steve Johnson
toda la idea de establecer los permisos a nivel de aplicación es incorrecta, por lo que creo que la gente debería evitar la documentación en esa sección. se actualizará en las próximas versiones de acuerdo con sus problemas de github
Claudiu Creanga
1

Esta es mi resolución temporal. Comento la línea 744 y 466 en <magento_dir>/setup/src/Magento/Setup/Model/Installer.php.

Este es el código de línea:

$this->checkInstallationFilePermissions();

Necesito una solución, no cambie el archivo central.

Thao Pham
fuente
El problema probablemente se deba a un enlace simbólico roto (respondido a continuación) en el directorio pub / static. Eliminar el enlace simbólico roto debería resolver el problema sin modificar los archivos principales.
mttjohnson
newtips.co/magento/questions/91184/… Esto funcionará
Envision Ecommerce
@EnvisionEcommerce el enlace no funciona.
MagePsycho
1

Se corrigió el permiso bin / magento denegado

chmod u + x bin / magento

Gentzy
fuente
0

Tuve el mismo problema donde no pude instalar Magento a través de la línea de comando. Simplemente crear la carpeta pub/staticresolvió el problema.

Quinten
fuente
0

Si alguien tiene este problema en el sistema operativo Windows. Simplemente ejecute el comando en el símbolo del sistema del Administrador y funcionará de maravilla. Espero que esto ayude a alguien.

Lakshin Karunaratne
fuente
0

En mi caso, ejecutar el comando de actualización a través de un usuario no root o un usuario con permisos limitados estaba causando el error. Asegúrese de ejecutar el comando de actualización con un usuario con suficientes permisos.

Arvind07
fuente
0

Verifiqué muchas veces los permisos de escritura y todo estuvo bien.

  1. Comenté esta fila, que me arroja una excepción.
  2. Luego ejecuté la configuración: actualización.
  3. Revertido la fila con excepción
  4. El problema no se reprodujo más
zhartaunik
fuente
0

Ejecute el siguiente comando para las siguientes tres direcciones IP:

<Magento-Directory>php bin\magento maintenance:allow-ips 127.0.0.1, 
<Magento-Directory>php bin\magento maintenance:allow-ips "the ip of my localhost given by the NAT-Router" and
<Magento-Directory>php bin\magento maintenance:allow-ips  "the ip of the NAT-Router" 
Berega
fuente
0

no uses esto:

rm -r pub/static

eliminará todos los archivos, incluso .htaccess

puedes usar esto será mejor:

rm -rf pub/static/frontend
rm -rf pub/static/adminhtml

después de ese uso:

php bin/magento setup:static-content:deploy en_US -f 
Aqeel Hussein
fuente
-1

simplemente elimine la carpeta pub / static de su magento2

rm -r pub/static

luego despliegue el contenido estático de magento2

php bin/magento setup:static-content:deploy

Al usar este proceso, mi mismo problema se resolvió.

Abhishek
fuente
44
No debe eliminar todo el directorio pub / static, ya que contiene un archivo .htaccess que es importante, y el archivo .htaccess no se volverá a crear en ninguna implementación de contenido estático. Puede ejecutar rm -r pub/static/*y eso debería evitar eliminar el archivo .htaccess.
mttjohnson el