运行bin / magento setup:upgrade时缺少目录pub / static中的写权限


19

前一天,我更新了一个新模块,它正常工作。现在,当我运行时bin/magento setup:upgrade,我收到以下异常。我尝试将pubMagento 2中的文件夹的权限设置为777(或770),但无法正常工作。

  [异常]
  缺少对以下目录的写权限:'pub / static'


您设法解决了这个问题吗?如果是这样,请发布解决方案。
Reena Parekh

你有同样的问题吗?
邵潘

是的,我面临着同样的问题。您是如何解决的?
Reena Parekh

我在内核中注释了一些行代码。你想做我吗?
邵潘

1
我在下面的帖子中发布了我的相关内容。我可以尝试
Thao Pham

Answers:


30

TL; DR截断pub/static文件夹。


对我来说,我有一个较旧的安装,其中可能包含一些符号链接和不再存在的旧文件。

问题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中的所有内容?
Lachezar Raychev '16

2
一切都进行得很好.... :)我真的开始鄙视这个框架
Lachezar Raychev 2016年

3
如果您删除pub / static的内容,请确保不要删除pub / static / .htaccess,因为它是代码库的一部分,并且不会被重新创建:github.com/magento/magento2/tree/2.0/ pub / static
mttjohnson

完美!这是它..
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!
Joshua Soileau

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

不要忘了递归做子目录:酒吧,酒吧/静等
Mage2.PRO

所有权与权限同等重要;检查上面的链接以及devdocs.magento.com/guides/v2.0/install-gde/prereq/…。您必须有两个用户。本地用户和Web服务器用户
Steve Johnson

在应用程序级别设置权限的整个想法是错误的,因此我认为人们应该避免使用该部分的文档。它将根据其github问题在下一个版本中更新
Claudiu Creanga '16

1

这是我解决的临时问题。我在中注释行744和466 <magento_dir>/setup/src/Magento/Setup/Model/Installer.php

这是行代码:

$this->checkInstallationFilePermissions();

我需要解决方案,不要更改核心文件。


该问题很可能是由于pub / static目录下的符号链接断开(下面回答)。删除损坏的符号链接应该可以解决问题,而无需修改核心文件。
mttjohnson


@EnvisionEcommerce链接无效。
MagePsycho

1

修复bin / magento权限被拒绝

chmod u + x bin / magento



0

我有同样的问题,我无法通过命令行安装Magento。只需创建文件夹即可pub/static解决该问题。


0

如果有人在Windows操作系统上遇到此问题。只需在管理员命令提示符下执行命令,它将像超级按钮一样工作。希望这对某人有帮助。


0

在我的情况下,通过非root用户或权限受限的用户运行upgrade命令导致了错误。确保与具有足够权限的用户一起运行upgrade命令。


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

只需从magento2中删除pub / static文件夹

rm -r pub/static

然后部署magento2的静态内容

php bin/magento setup:static-content:deploy

通过使用此过程,我解决了同样的问题。


4
您不应该删除整个pub / static目录,因为它包含重要的.htaccess文件,并且不会在任何静态内容部署中重新创建.htaccess文件。您可以运行rm -r pub/static/*,应该避免删除.htaccess文件。
mttjohnson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.