Немає дозволів на запис у папці / static каталогу під час запуску bin / magento setup: upgrade


19

Напередодні я оновив новий модуль, і він працював нормально. Тепер, коли я бігаю bin/magento setup:upgrade, отримую нижче Виняток. Я спробував встановити дозволи на 777 (або 770) для pubпапки в Magento 2, але вона не працює.

  [Виняток]
  Відсутні права доступу на запис до таких каталогів: 'pub / static'


Вам вдалося вирішити цю проблему? якщо так, будь ласка, опублікуйте рішення.
Реена Парех

Ви маєте те саме питання?
Тао Фам

так, я зіткнувся з тим же питанням. як ти вирішив це?
Реена Парех

Я коментую код коду рядка в ядрі. Ви хочете зробити так, як я?
Тао Фам

1
Я розмістив своє relsove в посаді нижче. Я можу спробувати з цим
Тао Фам

Відповіді:


30

pub/staticПапка скорочення TL; DR


Для мене була старіша установка, яка, ймовірно, мала деякі посилання та старі файли, яких більше не існує.

Проблема checkInstallationFilePermissionsполягає в тому, що він перевіряє дозволи рекурсивно. Файли та папки У мене відсутнє символьне посилання, і це повернуло помилку на чеку, якщо це можна записати.

Як налагодити:

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

  2. Перехід до рядка 143 у способі checkRecursiveDirectories

  3. Додайте рядки var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. Повторно запустіть bin/magento setup:upgrade

тепер ви побачите, що насправді не так, і ви можете виправити це. Особисто я видаляю всеpub/static , це буде автоматично створений контент, тому ви не повинні турбуватися про це.


1
Після видалення налаштування я видалив паб / статику: оновлення єдиної папки всередині паб / статики - це папка __requirejs. Css відсутній, ніякого стилю, що так колись .... Людина .. чи хочу, щоб я цього не робив
Lachezar Raychev

як я можу відновити все в пабі / статиці?
Лачезар Райчев

2
все йшло так добре .... :) Я дійсно починаю зневажати ці рамки
Лейчезар Райчев

3
Якщо ви видалите вміст pub / static, просто переконайтеся, що ви не видаляєте pub / static / .htaccess, оскільки він є частиною кодової бази і не буде відтворений: github.com/magento/magento2/tree/2.0/ паб / статичний
mttjohnson

Perfecto! Це було ..
Арвінд07

11

Я зіткнувся з цією помилкою в розвитку через розірваний символічний зв’язок.

Я створив файл у view/frontend/webкаталозі модуля, який у developerрежимі розгортався до pub/staticкаталогу за допомогою символічного посилання, яке вказувало на каталог модуля, де зберігається оригінальний файл.

У якийсь момент розвитку я вилучив файл зі свого модуля, але символічне посилання все ще існувало, pub/staticвказуючи на файл, який більше не існував. Я сподіваюся, що це було б так, якби я перейменував один із файлів.

Якщо сайт знаходиться в productionрежимі і bin/magento setup:static-content:deployзапустився, він фактично копіює файли в pub/staticкаталог замість створення символічних посилань.

Для того, щоб знайти це розірване символічне посилання, я запустив команду з оболонки

find -L . -type l

Видалення розірваного символічного посилання вирішило проблему (наприклад, використання find -L . -type l -exec rm {} \;).


Це була відповідь і на моє питання, дякую mttjohnson!
Джошуа Соле

4

Всередині кореневого каталогу Magento запустіть команди нижче, і проблему не потрібно:

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

Працювали для мене.


Це також видалить .htaccessфайл. Вам потрібен .htaccessфайл.
Адарш Хатрі

2

Ви повинні налаштувати дозволи, як це описано в офіційній документації: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html


1
чи можете ви фактичні дозволи просто викликати випадок зміни URL-адреси.
rob3000

Я повторюю спробу, але це не працює
Thao Pham

Не забувайте робити це рекурсивно у підкаталогах: pub, pub / static тощо
Mage2.PRO

право власності так само важливо, як і дозволи; перевірте вищезазначене посилання, а також devdocs.magento.com/guides/v2.0/install-gde/prereq/… . Ви повинні мати двох користувачів; місцевий користувач та користувач веб-сервера
Стів Джонсон

вся ідея встановлення дозволів на рівні програми неправильна, тому я думаю, що люди повинні уникати документації в цьому розділі. вона буде оновлена ​​в наступних версіях відповідно до випусків github
Claudiu Creanga

1

Це моє вирішене тимчасове. Я коментую рядок 744 та 466 дюйма <magento_dir>/setup/src/Magento/Setup/Model/Installer.php.

Це рядок:

$this->checkInstallationFilePermissions();

Мені потрібно рішення не змінювати основний файл.


Проблема, ймовірно, пов’язана з порушеним символьним посиланням (відповідь нижче) в папці / статичному каталозі. Видалення порушеного символьного посилання повинно вирішити проблему без зміни основних файлів.
mttjohnson


@EnvisionEcommerce посилання не працює.
MagePsycho

1

У дозволі на виправлення бін / магенто відмовлено

chmod u + x bin / magento



0

У мене була така ж проблема, коли я не міг встановити Magento через командний рядок. Просто створення папки pub/staticвирішило проблему.


0

Якщо хтось має цю проблему в ОС Windows. Просто виконайте команду в командному рядку адміністратора, і вона буде працювати як шарм. Сподіваюся, що це комусь допоможе.


0

У моєму випадку команда оновлення через некореневого користувача або користувача з обмеженими дозволами спричиняла помилку. Переконайтеся, що ви запустили команду оновлення з користувачем з достатньою кількістю дозволів.


0

Я багато разів перевіряв, як пишуть дозволи, і все було добре.

  1. Я прокоментував цей рядок, який кидає мені виняток.
  2. Потім я запустив setup: upgrade.
  3. Рядок повернено назад за винятком
  4. Випуск більше не відтворювався

0

Виконайте таку команду для наступних трьох 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" 

0

не використовуйте це:

rm -r pub/static

це видалить усі файли навіть .htaccess

ви можете використовувати це буде краще:

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

після цього використовуйте:

php bin/magento setup:static-content:deploy en_US -f 

-1

просто видаліть папку "stat / static" зі свого magento2

rm -r pub/static

потім розгорніть статичний вміст magento2

php bin/magento setup:static-content:deploy

використовуючи цей процес, моя та сама проблема вирішена.


4
Не слід видаляти весь паб / статичний каталог, оскільки він містить важливий файл .htaccess, а файл .htaccess не буде відтворений при будь-якому розгортанні статичного вмісту. Ви можете запустити, rm -r pub/static/*і це повинно уникати видалення файлу .htaccess.
mttjohnson
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.