sys_get_temp_dir()的结果不能被Apache进程的用户写入


result of sys_get_temp_dir() not writable by Apache process's user

我一直在用Assetic和yuiccompressor来缩小和连接js/css。

我有一个问题,找出正确的写权限工作在我的本地测试环境和PHP的sys_get_temp_dir(),其中Assetic依赖的结果。

我使用MAMP来管理我的测试环境,并且根据MAMP团队的建议,我以用户'_www'运行Apache,这是一个问题,因为sys_get_temp_dir()返回的文件夹有权限设置为我的本地用户。

例如,sys_get_temp_dir()将返回类似

的内容

/private/var/folders/41/t37ngfqd1m7dczjdr91s5vb40000gn/T

具有

权限

drwx------ 8 myname staff 272B May 4 13:23 T

到目前为止,我唯一能做的就是做chmod 777,这保证了个人的不幸和RTM人群的抨击。我明白了,这是允许的,但我还没有能够做出飞跃,找出正确的权限,以允许_www以可预测的安全方式写入sys_get_temp_dir()返回的文件夹。

我试过了(我只能猜测仍然很糟糕,但略低于777):

  • 进入查找器(是的,OSX)右键单击/private/var/folders/目录并递归地授予_www读/写权限-不起作用
  • 尝试将_www添加到"wheel"answers"staff"组。不能工作,因为(如上所示)返回的文件夹只能由用户myname(即使/private/var/folders属于wheel组,某些文件夹属于staff组)

所以,如果我不能将_www添加到组中,并且我不能递归地访问文件夹,我是否必须以用户myname的身份运行MAMP ?一定有什么Unix-fu我能做的吧?

您的文件夹只有所有者的权限,换句话说,drwx------的含义与700相同。文件夹所属的组是staff,因此您可以将_www添加到staff组,或者将文件夹所属的组更改为_www。此外,还需要设置组权限,因此,如果希望对组具有读写和执行权限,则可以将权限设置为770。权限码的第二个数字是组权限