Symfony Project,无法修复文件权限

时间:2016-09-29 16:55:45

标签: php composer-php symfony

当我尝试更新编写器或清除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.

2 个答案:

答案 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"目前这适用于清除缓存但不适用于作曲家。