我无法删除 Magento 2.2.6 中的文件夹 generated/code

I can't delete the folder generated/code in Magento 2.2.6

我的项目使用 Docker。安装带有示例数据的 2.2.6 包后,在执行 php bin/magento cache:clean

时出现如下问题

The file "/var/www/html/src/generated/code/Magento/Backend/App/Request/PathInfoProcessor/Proxy.php" cannot be deleted Warning!unlink(/var/www/html/src/generated/code/Magento/Backend/App/Request/PathInfoProcessor/Proxy.php): No such file or directory

无法删除 generated/code 文件夹,我必须重新启动计算机然后才能删除文件夹

我使用 php 7.1.22、percona 5.6.39 和 docker 版本 18.06.1-ce-win73 (19507)

发生这种情况是因为项目文件夹的权限不足,files.Also如果使用 Apache 作为网络服务器,www-data 必须是项目的所有者。 请执行以下命令:--

  • sudo chown -R www-data:www-data [magento 目录路径]
  • 导航到您的 magento 项目的根目录
  • 找到。 -type f -exec chmod 644 {} \;
  • 找到。 -type d -exec chmod 755 {} \;
  • 找到 ./var -type d -exec chmod 777 {} \;
  • 找到 ./pub/media -type d -exec chmod 777 {} \;
  • 找到 ./pub/static -type d -exec chmod 777 {} \;
  • chmod 777 ./app/etc
  • chmod 644./app/etc/*.xml
  • chmod u+x bin/magento

在Docker中从容器的命令行安装magento 2为我解决了Windows中写权限的问题

您可能需要调整参数:

bin/magento setup:install --base-url=http://local.shop.magento2.com \
--db-host=db_magento2 --db-name=magento --db-user=magento --db-password=magento \
--admin-firstname=magento --admin-lastname=magento --admin-email=user@example.com \
--admin-user=admin --admin-password=admin123 --language=en_US \
--currency=USD --timezone=Europe/Madrid --use-rewrites=1

以防万一有人偶然发现这个: 将以下内容添加到您的 docker 文件

RUN echo "root:root" | chpasswd

这将允许您切换到 root 和 运行 chown

su root
password:root
chown -R user:group /folder

对于提供帮助的人来说,一个重要的狂热是认为所有系统都是一样的。

www-data是只要有条件的用户,很多人不会满足,因为他们更喜欢用nginx + php-fpm而不是通才模式。

其他时候,包括在该模型中的不是用户运行 Appache,nginx 或最后,php,是www-data。

所以最正确的答案不是:

  • 将整个 magento 文件夹的所有者更改为 www-data
  • 都不给权限777,这是网络所有畸变中最常见的

请按正确顺序排列

  1. 谁执行你写在magento目录下的进程?
  2. PHP 以用户身份还是全局写入?
  3. 我参考了我的php配置(php、php-fpm等)来验证哪个用户是执行操作的?

一旦我们有了数据,我们就可以执行

sudo chown -R <user_correct>: <group_correct>

不要关注那些总是写 chmod -R 777

的人

或者有一天他们会以正常的方式醒来,但没有他们的网站,但却充满了难以治愈的感染。