【问题标题】:I can't delete the folder generated/code in Magento 2.2.6我无法删除 Magento 2.2.6 中生成的文件夹/代码
【发布时间】:2018-10-04 10:42:03
【问题描述】:

我在我的项目中使用 Docker。使用示例数据安装 2.2.6 包后,当我执行php bin/magento cache:clean 时,它给我带来了如下问题@

无法删除文件“/var/www/html/src/generated/code/Magento/Backend/App/Request/PathInfoProcessor/Proxy.php”Warning!unlink(/var/www/html/src/generated /code/Magento/Backend/App/Request/PathInfoProcessor/Proxy.php): 没有这样的文件或目录

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

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

【问题讨论】:

    标签: php magento magento2 magento2.2


    【解决方案1】:

    这是由于对项目文件夹和文件的权限不足。如果使用 Apache 作为 Web 服务器,www-data 必须是项目的所有者。 请执行以下命令:--

    • sudo chown -R www-data:www-data [ma​​gento 目录路径]
    • 导航到您的 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

    【讨论】:

    • 这是否适用于共享服务器。我面临同样的问题。但我无法在共享服务器上运行 sudo 命令。我只是运行 Chown 并且文件的用户不是 www-data:www-data 而是它的 SSH 登录用户名。我由 siteground 托管,他们将服务器从 Cpanel 转移到 Sitetools 之后,当我将站点切换回生产时,我无法将站点置于开发人员模式,但仍然损坏。我必须恢复备份然后它的工作。现在通过filezilla删除了代码文件夹。这会永久解决问题吗?静态文件的前端和后端 r 损坏 403 错误
    【解决方案2】:

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

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

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

    所以最正确的答案不是:

    • 将整个 magento 文件夹的所有者更改为 www-data
    • 不授予权限 777,这是网络中所有异常中最常见的。

    Lo mas Correcto sería

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

    一旦我们有了这些数据,那么如果我们可以执行

    sudo chown -R <user_correct>: <group_correct>
    

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

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

    【讨论】:

      【解决方案3】:

      在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
      

      【讨论】:

      • 不幸的是,它对我们不起作用。我们从命令行安装了 Magento 2,但generated 文件夹仍然出现错误(使用 Docker for Windows)。
      • 我们必须从 Docker 卷中排除生成/代码和生成/元文件夹。这样linux权限才会生效。
      【解决方案4】:

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

      RUN echo "root:root" | chpasswd
      

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-22
        • 2020-06-09
        • 2013-04-07
        • 2020-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多