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