Symfony2“;资产:转储-环境产品“;权限被拒绝异常

Symfony2“;资产:转储-环境产品“;权限被拒绝异常,symfony,permissions,assetic,yui-compressor,Symfony,Permissions,Assetic,Yui Compressor,在我对root用户执行更新(composer.phare update)之前,一切正常,但是现在当我尝试运行“Assetic:dump-env prod”时,我得到了一个“Permission denied”错误 我在这篇文章中尝试了所有的解决方案 清除缓存、chown、chgrp和chmod没有任何效果始终是同一个问题我不建议使用root进行更新。在我看来,方法是让/app/logs/app/cache对于服务器是可写的,而src和vendor文件夹对于服务器是可读的 假设您的用户和组是:co

在我对root用户执行更新(composer.phare update)之前,一切正常,但是现在当我尝试运行“Assetic:dump-env prod”时,我得到了一个“Permission denied”错误

我在这篇文章中尝试了所有的解决方案


清除缓存、chown、chgrp和chmod没有任何效果始终是同一个问题

我不建议使用root进行更新。在我看来,方法是让/app/logs/app/cache对于服务器是可写的,而src和vendor文件夹对于服务器是可读的

假设您的用户和组是:coolman,然后尝试以下操作:

# everything is yours
chown coolman:coolman -R .

# all and group can access folders and read files, you as user can additionally write them
chmod ag=rX,u=rwX -R .

# full access to logs and cache for everyone (also the server)
chmod a+rwX -R app/logs app/cache
使用coolman用户更新作曲家

也只有一个小问题。日志可能是www-data:www-data rw-r--r--因此您不能删除它们。因此,只需在app.php和app/console文件中添加一行:

\umask(0000);

我认为这一行被注释为默认行。这就是说,如果PHP中没有设置明确的权限,那么创建的每个文件都将获得0777-mask=0777,这样您就可以删除日志并进行缓存。

我不建议使用root进行更新。在我看来,方法是让/app/logs/app/cache对于服务器是可写的,而src和vendor文件夹对于服务器是可读的

假设您的用户和组是:coolman,然后尝试以下操作:

# everything is yours
chown coolman:coolman -R .

# all and group can access folders and read files, you as user can additionally write them
chmod ag=rX,u=rwX -R .

# full access to logs and cache for everyone (also the server)
chmod a+rwX -R app/logs app/cache
使用coolman用户更新作曲家

也只有一个小问题。日志可能是www-data:www-data rw-r--r--因此您不能删除它们。因此,只需在app.php和app/console文件中添加一行:

\umask(0000);

我认为这一行被注释为默认行。这就是说,如果PHP中没有设置明确的权限,那么创建的每个文件都将获得0777-mask=0777,这样您就可以删除日志并进行缓存。

我不建议使用root进行更新。在我看来,方法是让/app/logs/app/cache对于服务器是可写的,而src和vendor文件夹对于服务器是可读的

假设您的用户和组是:coolman,然后尝试以下操作:

# everything is yours
chown coolman:coolman -R .

# all and group can access folders and read files, you as user can additionally write them
chmod ag=rX,u=rwX -R .

# full access to logs and cache for everyone (also the server)
chmod a+rwX -R app/logs app/cache
使用coolman用户更新作曲家

也只有一个小问题。日志可能是www-data:www-data rw-r--r--因此您不能删除它们。因此,只需在app.php和app/console文件中添加一行:

\umask(0000);

我认为这一行被注释为默认行。这就是说,如果PHP中没有设置明确的权限,那么创建的每个文件都将获得0777-mask=0777,这样您就可以删除日志并进行缓存。

我不建议使用root进行更新。在我看来,方法是让/app/logs/app/cache对于服务器是可写的,而src和vendor文件夹对于服务器是可读的

假设您的用户和组是:coolman,然后尝试以下操作:

# everything is yours
chown coolman:coolman -R .

# all and group can access folders and read files, you as user can additionally write them
chmod ag=rX,u=rwX -R .

# full access to logs and cache for everyone (also the server)
chmod a+rwX -R app/logs app/cache
使用coolman用户更新作曲家

也只有一个小问题。日志可能是www-data:www-data rw-r--r--因此您不能删除它们。因此,只需在app.php和app/console文件中添加一行:

\umask(0000);

我认为这一行被注释为默认行。这意味着,如果在PHP中没有设置明确的权限,那么创建的每个文件都将获得0777-mask=0777,这样您就可以删除日志并进行缓存。

当您运行基于web的应用程序时,处理文件权限的一种方法需要自动部署或持续手动更新,如使用symfony2的bin/console,确保文件属于运行应用程序的用户是很重要的

由于您没有提供环境设置,我将做一些假设,并为您提供一个通用的设置方案,希望这将有助于指导您找到适合您具体情况的最佳解决方案

环境假设:

  • 操作系统:linux风格
  • 网络服务器:nginx将作为www数据运行
  • PHP:PHP fpm将作为testapp运行,并为此应用程序使用套接字连接
一般设置步骤:

  • 在/etc/nginx/nginx.conf文件中,确保用户/组设置为www数据

  • 在/etc/php5/fpm/pool.d/apptest.conf文件中,确保用户和组设置为testapp

  • 提示:可能需要创建上面的文件,如果是这种情况,您应该复制位于同一文件夹中的www.conf文件的内容

  • 在/etc/php5/fpm/pool.d/apptest.conf文件中,确保将listen.owner&listen.group设置为www-data

  • 确保在文件/etc/php5/fpm/pool.d/apptest.conf中有一行如下所示:

  • listen=/var/run/php5 fpm.apptest.sock.

    注意:上面那一行的fpm.apptest.sock部分是一个文件名,该文件名尚不存在,但将在重新启动php时创建。这样做的好处是,您将为这个应用程序提供一个独立的php进程

  • a) 在nginx上,如果使用套接字连接,请确保在apptest conf文件中添加此行:
  • unix:/var/run/php5-fpm.apptest.sock

    b) 如果您使用的是apache,请在该conf文件中添加此行:

    -socket/var/run/php5-fpm.apptest.sock

  • 如果您在linux机器上,请创建一个没有密码的用户,它应该被称为apptest
  • 注意:apptest是应用程序的名称,也是运行php的用户,它还应该是应用程序文件/文件夹的所有者

  • 重新启动php和nginx/apache 提示:要在linux中更改为没有密码的用户,您应该具有root权限并运行:
    sudo-u apptest-i.

    在此之后,您应该以之前创建的apptest用户的身份执行所有命令,包括运行symfony2 bin/控制台


    这些是非常通用的步骤,因此如果您需要任何说明,请告诉我。

    当您运行基于web的应用程序时,处理文件权限的一种方法需要