Doctrine orm 条令:生成:不允许实体chmod操作

Doctrine orm 条令:生成:不允许实体chmod操作,doctrine-orm,symfony,Doctrine Orm,Symfony,我想继续一个我有一段时间没有接触过的项目,在执行时遇到了这个错误 php-bin/console原则:generate:entites-SalonBundle(它来自shell,因此使用php-CLI) 根据某人的建议,刚刚在命令行中添加了-vvv,结果如下: Exception trace: () at /var/www/3DH/salon/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/EntityGenerator.php:392 Symfony\Co

我想继续一个我有一段时间没有接触过的项目,在执行时遇到了这个错误
php-bin/console原则:generate:entites-SalonBundle
(它来自shell,因此使用php-CLI)

根据某人的建议,刚刚在命令行中添加了-vvv,结果如下:

Exception trace:
() at /var/www/3DH/salon/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/EntityGenerator.php:392
Symfony\Component\Debug\ErrorHandler->handleError() at n/a:n/a
chmod() at /var/www/3DH/salon/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/EntityGenerator.php:392
Doctrine\ORM\Tools\EntityGenerator->writeEntityClass() at /var/www/3DH/salon/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/EntityGenerator.php:347
Doctrine\ORM\Tools\EntityGenerator->generate() at /var/www/3DH/salon/vendor/doctrine/doctrine-bundle/Command/GenerateEntitiesDoctrineCommand.php:133
Doctrine\Bundle\DoctrineBundle\Command\GenerateEntitiesDoctrineCommand->execute() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:256
Symfony\Component\Console\Command\Command->run() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:837
Symfony\Component\Console\Application->doRunCommand() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:187
Symfony\Component\Console\Application->doRun() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:80
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:118
Symfony\Component\Console\Application->run() at /var/www/3DH/salon/bin/console:27
不提供任何解决方案

不适用于我,因为我不使用vagrant(未安装)

我理解这个问题。
首先我想我会说我很愚蠢

@约翰·史密斯:你离这里不远

事实上,我的问题只是逻辑…
尝试将root拥有的文件与普通用户进行chmod是不可能的…
这很正常

src/
文件夹中生成的每个文件都是由
/vendor/doctrine/orm/lib/doctrine/orm/tools/
中的文件(称为工具)生成的
当然,文件归使用这些工具(细枝、实体、表单等)的用户所有
生成文件时,这些工具会尝试对新文件进行chmod,以防我们笨到无法设置正确的文件夹和文件权限

在我的例子中,当我传递我的webperms脚本时,所有文件的所有者都是
root:www-data

当然,当我尝试生成实体时,它会失败,因为我不再是文件所有者

目前有两种解决方案:

  • src/
    文件所有权更改为用户:www-data
  • 注释位于
    /vendor/doctrine/orm/lib/doctrine/orm/tools/

  • 我不知道如何联系symfony团队,但我建议添加一个
    if
    条件,这将取决于symfony参数,并允许我们绕过这个
    chmod

    为什么文件应该归root所有?谁是文件所有者并不重要,因为编辑文件的是组。我以前从未遇到过这个问题。不知道是怎么回事。我甚至不知道为什么symfony会尝试使用
    chmod
    以HMN doublecheck子文件夹/EntityCheck“以防万一”开始,但所有文件都有
    -rw-rw-r-->+1根www数据
    。这里没什么错,那么我只能想象运行Web服务器的用户不在该组中,如果您对用户和组属性运行apachecheck httpd.conf
    chown -R root:www-data $targerDir
    find $targerDir -type d -exec chmod ug+rwx "{}" \;
    find $targerDir -type f -exec chmod ug+rw "{}" \;
    find $targerDir -type d -exec chmod g+s "{}" \;
    find $targerDir -type d -exec setfacl -m g:www-data:rwx,d:g:www-data:rwx "{}" \;
    find $targerDir -type f -exec setfacl -m g:www-data:rw- "{}" \;
    
    Exception trace:
    () at /var/www/3DH/salon/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/EntityGenerator.php:392
    Symfony\Component\Debug\ErrorHandler->handleError() at n/a:n/a
    chmod() at /var/www/3DH/salon/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/EntityGenerator.php:392
    Doctrine\ORM\Tools\EntityGenerator->writeEntityClass() at /var/www/3DH/salon/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/EntityGenerator.php:347
    Doctrine\ORM\Tools\EntityGenerator->generate() at /var/www/3DH/salon/vendor/doctrine/doctrine-bundle/Command/GenerateEntitiesDoctrineCommand.php:133
    Doctrine\Bundle\DoctrineBundle\Command\GenerateEntitiesDoctrineCommand->execute() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:256
    Symfony\Component\Console\Command\Command->run() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:837
    Symfony\Component\Console\Application->doRunCommand() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:187
    Symfony\Component\Console\Application->doRun() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:80
    Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /var/www/3DH/salon/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:118
    Symfony\Component\Console\Application->run() at /var/www/3DH/salon/bin/console:27