当我尝试更新编写器或清除symfony项目的缓存时,我经常收到文件权限错误。 然而,根据symfony的文档正确设置了我的文件:http://symfony.com/doc/current/setup/file_permissions.html
我在Linux下,Manjaro Budgie版(最后稳定版) server apache最新版本
例如:
composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
> Incenteev\ParameterHandler\ScriptHandler::buildParameters
Updating the "app/config/parameters.yml" file
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache
// Clearing the cache for the dev environment with debug true
[Symfony\Component\Filesystem\Exception\IOException]
Failed to remove file "/srv/http/PetitMur/var/cache/de~/annotations/1a/5b504d5c506c6174666f726d42756e646c655c456e746974795c41727469636c652474616773405b416e6e6f745d5d5b315d.doctrinecache.data": .
此文件具有以下权利:
pierre $ la /srv/http/PetitMur/var/cache/de~/annotations...data
-rw-rw-r--+ 1 http http 234 29.09.2016 18:13 /srv/http/PetitMur/var/cache/de~/annotations...data
我知道,这个问题很复杂。但是我已经根据symfony的文档设置了权限文件。目前我必须在超级用户上运行命令才能使其正常工作,这是不正常的。
你有个主意吗?
编辑:
php bin/symfony_requirements
Symfony Requirements Checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> PHP is using the following php.ini file:
/etc/php/php.ini
> Checking Symfony requirements:
.............................WW......
[OK]
Your system is ready to run Symfony projects
Optional recommendations to improve your setup
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* intl extension should be available
> Install and enable the intl extension (used for validators).
* a PHP accelerator should be installed
> Install and/or enable a PHP accelerator (highly recommended).
Note The command console could use a different php.ini file
~~~~ than the one used with your web server. To be on the
safe side, please check the requirements from your web
server using the web/config.php script.
答案 0 :(得分:0)
我怀疑权限以及可能的用户组设置可能不正确。
进入Apache httpd.conf文件以检查用户/组设置。你会看到这样的行:
User apache
Group apache
以上内容来自我的系统,即CentOS 6,httpd.conf位于/etc/httpd/conf/
文件夹下。您可能位于不同的位置,可能是用户httpd
而不是(检查它)。
然后为Symfony3项目设置适当的用户/组:
sudo chown -R apache:apache /srv/http/PetitMur
以上命令将用户:组设置为apache
,您可能必须使用httpd
现在删除旧的缓存文件&日志,因为它们可能是在错误的用户之前创建的:
sudo rm -rf var/cache/*
sudo rm -rf var/logs/*
然后再次运行setfacl,确保切割&粘贴(有一个大写X)并使用正确的用户(apache或httpd):
$ sudo setfacl -R -m u:apache:rwX -m u:`whoami`:rwX var
$ sudo setfacl -dR -m u:apache:rwX -m u:`whoami`:rwX var
然后测试你的系统并看到问题得到解决。
答案 1 :(得分:0)
我试过这个" sudo chown -R http:pierre Myproject"目前这适用于清除缓存但不适用于作曲家。