Отсутствие прав на запись в каталог pub / static при запуске bin / magento setup: обновление


19

За день до этого я обновил новый модуль, и он работал нормально. Теперь, когда я бегу bin/magento setup:upgrade, я получаю следующее исключение. Я попытался установить разрешения для 777 (или 770) для pubпапки в Magento 2, но она не работает.

  [Исключение]
  Отсутствуют разрешения на запись в следующие каталоги: 'pub / static'


Вам удалось решить эту проблему? Если это так, пожалуйста, оставьте решение.
Рина Парех

У вас есть такая же проблема?
Тао Фам

да, я сталкиваюсь с той же проблемой. как ты это решил?
Рина Парех

Я комментирую некоторый строковый код в ядре. Вы хотите сделать как я?
Тао Фам

1
я разместил свой relsove в посте ниже. Я могу попробовать с этим
Тао Фам

Ответы:


30

TL; Укороченная pub/staticпапка DR .


Для меня у меня была более старая установка, которая, вероятно, имела некоторые символические ссылки и старые файлы, которые больше не существуют.

Проблема в checkInstallationFilePermissionsтом, что он проверяет разрешения рекурсивно. Файлы и папки. У меня отсутствовала символическая ссылка, и при проверке она возвращала false, если она доступна для записи.

Как отлаживать:

  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
После того, как я запустил установку, я полностью удалил pub / static: обновите единственную папку внутри pub / static - папку __requirejs. Css отсутствует, стиля нет, что так когда-либо ... Чувак ... неужели я бы этого не сделал
Лачезар Райчев

как я могу восстановить все в pub / static?
Лачезар Райчев

2
все шло так хорошо .... :) я действительно начинаю презирать эту структуру
Лачезар Райчев

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

Perfecto! Это было это ..
Arvind07

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

Я пытаюсь снова, но это не работает
Тао Фам

Не забудьте сделать это рекурсивно в подкаталогах: 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();

Мне нужно решение не меняйте файл ядра.


Вероятно, проблема связана с неработающей символической ссылкой (ответ приведен ниже) в каталоге pub / static. Удаление неработающей символической ссылки должно решить проблему без изменения файлов ядра.
mttjohnson

newtips.co/magento/questions/91184/… Это будет работать
Envision

@EnvisionEcommerce ссылка не работает.
MagePsycho

1

Исправить отказ в разрешении bin / magento

chmod u + x bin / magento



0

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


0

Если у кого-то есть эта проблема на ОС Windows. Просто выполните команду в командной строке администратора, и она будет работать как шарм. Надеюсь, это кому-нибудь поможет.


0

В моем случае при запуске команды обновления через пользователя без полномочий root или пользователя с ограниченными правами возникла ошибка. Убедитесь, что вы выполнили команду обновления с пользователем с достаточными разрешениями.


0

Я много раз проверял права на запись и все было хорошо.

  1. Я прокомментировал этот ряд, который бросает мне исключение.
  2. Затем я запустил установку: обновить.
  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

просто удалите паб / статическую папку из вашего magento2

rm -r pub/static

затем разверните статический контент magento2

php bin/magento setup:static-content:deploy

с помощью этого процесса моя проблема решена.


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