前一天,我更新了一个新模块,它正常工作。现在,当我运行时bin/magento setup:upgrade
,我收到以下异常。我尝试将pub
Magento 2中的文件夹的权限设置为777(或770),但无法正常工作。
[异常]
缺少对以下目录的写权限:'pub / static'
前一天,我更新了一个新模块,它正常工作。现在,当我运行时bin/magento setup:upgrade
,我收到以下异常。我尝试将pub
Magento 2中的文件夹的权限设置为777(或770),但无法正常工作。
[异常]
缺少对以下目录的写权限:'pub / static'
Answers:
TL; DR截断pub/static
文件夹。
对我来说,我有一个较旧的安装,其中可能包含一些符号链接和不再存在的旧文件。
问题checkInstallationFilePermissions
是它以递归方式检查权限。文件和文件夹。我有一个缺少的符号链接,如果可写,则在检查中返回false。
如何调试:
setup/src/Magento/Setup/Model/FilePermissions.php
方法中的第143行 checkRecursiveDirectories
添加行 var_dump($subDirectory);var_dump($subDirectory->isWritable());
重新运行 bin/magento setup:upgrade
现在您将看到真正的问题所在,并且可以对其进行修复。我个人删除了其中的所有内容pub/static
,这将是自动生成的内容,因此您不必为此担心。
由于符号链接断开,我在开发中遇到此错误。
我已经在模块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 {} \;
)。
您应该按照官方文档中的说明设置权限:http : //devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html
这是我解决的临时问题。我在中注释行744和466 <magento_dir>/setup/src/Magento/Setup/Model/Installer.php
。
这是行代码:
$this->checkInstallationFilePermissions();
我需要解决方案,不要更改核心文件。
这些文件夹必须具有正确的权限,例如:http : //devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html
当您删除pub / static文件夹的内容并为pub / static文件夹授予权限770时,该消息将不会再次显示。
如果有人在Windows操作系统上遇到此问题。只需在管理员命令提示符下执行命令,它将像超级按钮一样工作。希望这对某人有帮助。
只需从magento2中删除pub / static文件夹
rm -r pub/static
然后部署magento2的静态内容
php bin/magento setup:static-content:deploy
通过使用此过程,我解决了同样的问题。
rm -r pub/static/*
,应该避免删除.htaccess文件。