hyt123321c 发表于 2012-06-26 10:46

如何控制新生成的文件的属性?通过php.ini参数设置。

比如我的环境是,freebsd+mysql5+php5,现在要求让php生成出来的新文件(包括目录)都是777权限,通过php.ini能做到吗?

maochanglu 发表于 2012-06-26 11:01

http://php.net/manual/en/function.chmod.php

hyt123321c 发表于 2012-06-26 11:06

回复 2# maochanglu


    我的意思是,不通过chmod,通过php.ini强制使所有新生成的文件,属性都是777,可能吗。。?

sunceenjoy 发表于 2012-06-26 14:32

用umask屏蔽字来控制,php进程的屏蔽字由apache/nginx的控制,启动apache/nginx的时候,加入umask为000就行了。但值得注意的是 不管屏蔽码是多少:
·新创建的文件默认不具有可执行允可权限。
·新创建的目录默认具有可执行允可权限。

shang2010 发表于 2012-06-26 14:39

本帖最后由 shang2010 于 2012-06-26 15:46 编辑

sunceenjoy 发表于 2012-06-26 14:32 static/image/common/back.gif
用umask屏蔽字来控制,php进程的屏蔽字由apache/nginx的控制,启动apache/nginx的时候,加入umask为000就行了 ...

所以你的回答还没有满足楼主需求,

我这边没有bsd,,:mrgreen:

hyt123321c 发表于 2012-06-26 14:43

回复 4# sunceenjoy
求详细说明!也就是说,通过控制apache,能让php生成出来的文件属性默认成777吗?利用/usr/local/apache2/bin/envvars 可以控制apache的umask吗?


   

cyk626 发表于 2012-06-26 14:47

关注中。关注中。关注中。

sunceenjoy 发表于 2012-06-26 15:22

拿apache来说吧,vi /usr/local/apache2/bin/apachectl,在里面加入:
umask 000

因为apache启动的时候,子进程会继承父进程的一些环境变量,包括文件屏蔽字umask

从apachectl的前面几行可以看到:
if test -f /usr/local/apache2/bin/envvars; then
. /usr/local/apache2/bin/envvars
fi
所以你在envvars里面加入umask 000这个也是可以的.

hyt123321c 发表于 2012-06-26 17:20

回复 8# sunceenjoy
失败了。。修改之后不起作用。php mkdir()默认的属性依然没有改变(#不管我怎么修改umask,默认权限都是755的)。这个跟编译时的参数有关系吗? --with-suexec-umask 和这个有关系吗?


   

hyt123321c 发表于 2012-06-26 17:22

回复 8# sunceenjoy
我编译的时候没有使用--with-suexec-umask这个参数。


   
页: [1]
查看完整版本: 如何控制新生成的文件的属性?通过php.ini参数设置。