Symfony2 doctrine:generate:entities 不允许 chmod 操作
Symfony2 doctrine:generate:entities chmod operation not permitted
最近在开发机器上从 2.3.1 升级到 2.8.7。
在我需要创建一个新的 table 之前,一切都很顺利。
设法通过 doctrine:mapping:convert
生成 yml 罚款
当我通过 doctrine:generate:entities 创建 getter 和 setter 时,我得到了这个:
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: chmod(): Operation not permitted
仅此而已。这不是很有帮助。它是我需要在某处添加 @ 的 chmod 吗?
我正在执行命令作为 www-data 并且日志文件夹文件也是 www-data,所以我不认为这是调试文件权限问题。
另外,是否与需要升级的东西有关。这是我的作曲家文件:
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.8.*",
"doctrine/orm": "2.5.*",
"doctrine/doctrine-bundle": "1.6.*",
"twig/extensions": "1.3.*",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"symfony/assetic-bundle": "~2.8",
"sensio/distribution-bundle": "~5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"snc/redis-bundle": "dev-master",
"predis/predis": "1.0.*",
"symfony/class-loader": "v2.8.*"
},
"require-dev": {
"sensio/generator-bundle": "~3.0",
"symfony/phpunit-bridge": "~2.7"
},
我只是希望调试在当时正在做的事情上能稍微有点帮助。或者file/line错误发生在什么地方。
还要检查 cache
文件夹所有权。如果它是同一用户,则不必担心。还是仔细检查一下。
此外,如果这不起作用,请暂时禁用safe_mode
并再次检查。
这与其说是修复,不如说是变通。
基本上在版本更改中,他们添加了想要修改存储库文件的代码。由于这些是自动生成的,因此大多数时候都很好。如果您已经向它们中的任何一个添加了代码,这是您打算做的,特别是如果您以 www-data 以外的用户身份修改代码,它会破坏事情。
所以现在,当我开始做数据库结构更新的 getters 和 setters 部分时,我 运行 这个:
sudo find ./src/MyBunddle/SiteBundle/Entity -name '*.php' ! -name '*Repository.php' -exec chown www-data \{\} \; -print
不知道,但完成了工作。
如果您出于任何原因需要改回原样,可以使用
sudo find ./src/MyBundle/SiteBundle/Entity -name '*.php' ! -name '*Repository.php' -exec chown youUser \{\} \; -print
你可以看到他们在这里讨论这个问题:
https://github.com/doctrine/doctrine2/commit/caf30b889bb898620d843d1ec4940d01fa1d8877
最近在开发机器上从 2.3.1 升级到 2.8.7。 在我需要创建一个新的 table 之前,一切都很顺利。 设法通过 doctrine:mapping:convert
生成 yml 罚款当我通过 doctrine:generate:entities 创建 getter 和 setter 时,我得到了这个:
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: chmod(): Operation not permitted
仅此而已。这不是很有帮助。它是我需要在某处添加 @ 的 chmod 吗? 我正在执行命令作为 www-data 并且日志文件夹文件也是 www-data,所以我不认为这是调试文件权限问题。
另外,是否与需要升级的东西有关。这是我的作曲家文件:
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.8.*",
"doctrine/orm": "2.5.*",
"doctrine/doctrine-bundle": "1.6.*",
"twig/extensions": "1.3.*",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"symfony/assetic-bundle": "~2.8",
"sensio/distribution-bundle": "~5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"snc/redis-bundle": "dev-master",
"predis/predis": "1.0.*",
"symfony/class-loader": "v2.8.*"
},
"require-dev": {
"sensio/generator-bundle": "~3.0",
"symfony/phpunit-bridge": "~2.7"
},
我只是希望调试在当时正在做的事情上能稍微有点帮助。或者file/line错误发生在什么地方。
还要检查 cache
文件夹所有权。如果它是同一用户,则不必担心。还是仔细检查一下。
此外,如果这不起作用,请暂时禁用safe_mode
并再次检查。
这与其说是修复,不如说是变通。
基本上在版本更改中,他们添加了想要修改存储库文件的代码。由于这些是自动生成的,因此大多数时候都很好。如果您已经向它们中的任何一个添加了代码,这是您打算做的,特别是如果您以 www-data 以外的用户身份修改代码,它会破坏事情。
所以现在,当我开始做数据库结构更新的 getters 和 setters 部分时,我 运行 这个:
sudo find ./src/MyBunddle/SiteBundle/Entity -name '*.php' ! -name '*Repository.php' -exec chown www-data \{\} \; -print
不知道,但完成了工作。
如果您出于任何原因需要改回原样,可以使用
sudo find ./src/MyBundle/SiteBundle/Entity -name '*.php' ! -name '*Repository.php' -exec chown youUser \{\} \; -print
你可以看到他们在这里讨论这个问题:
https://github.com/doctrine/doctrine2/commit/caf30b889bb898620d843d1ec4940d01fa1d8877