WIN下我不说了
UNIX下:
系统默认是以nobody:nobody身份创建的
比如要在当前目录下test目录下,创建一个test目录,并在./test/test下建立一个abc的文件,向其中写入hello world!!字串.(前提:父目录对其他用户必须有读写和执行权限.比如777)
-------------------------
<?
$dir="test/test";
mkdir($dir,0777);
$fp=fopen("$dir/abc",a);
fputs($fp,"hello world!!");
fclose($fp);
?>
--------------------------
PHP4.3.2 + APACHE2.0.47 下正常运行.
UNIX下:
系统默认是以nobody:nobody身份创建的
比如要在当前目录下test目录下,创建一个test目录,并在./test/test下建立一个abc的文件,向其中写入hello world!!字串.(前提:父目录对其他用户必须有读写和执行权限.比如777)
-------------------------
<?
$dir="test/test";
mkdir($dir,0777);
$fp=fopen("$dir/abc",a);
fputs($fp,"hello world!!");
fclose($fp);
?>
--------------------------
PHP4.3.2 + APACHE2.0.47 下正常运行.
目录我能正常建立。
但是目录的所有者却是一不知道奇怪名字(叫:99)to: hcfyxy(无名) ( )
我建立目录时,会随后用
@chmod($path,0777)改变权限的。
权限都没有问题,问题是目录的所有者不是我希望的。
mkdir($path, 0777);
chown($path, 'username');
这样执行就提示我没有权限了。另外owner uid不是99是另外一个。可是建立的目录的uid是99
$euid = posix_geteuid();
$suid = getmyuid();print "euid: $euid <br> script uid: $suid";
?>服务器是apache么?
script uid: 32003
如果没有特殊指定的话,新建文件和新建目录的所有者应该是 www用Web方式建立的文件或目录的所有者是Web用户。
目录建立是通过http:访问,然后建立的。
就出现了这样的问题。
User www
我想知道怎么才能避免这样。因为这样我没有办法继续下面的操作。
chmod($path, 0777);因为mkdir()函数在某些情况或系统下不能创建权限。
不是权限的问题,请看清问题。
现在就是非安全模式了。
httpd.conf里找到 User 改成你希望的用户;
Group xxxx
设置正确,没有一个叫99的组或用户
新建文件和建目录一样。
建立目录时用exec("mkdir -p $dir");
绝对可以
可是有一个问题,我是多个用户共用这一个Apache服务器,采用虚拟主机对各用户发布,如果我把User/Group改为a/a用户/组,那b/b用户/组中执行的mkdir程序所创建的目录及文件也都属于a/a用户/组,且无法用chown修改为b用户。即便b用户是root也无法修改。如何解决?
把User/Group改写到<VirtulHost>里不就行了.
把你的httpd.conf短信发给我,帮你看看。
如果你的虚拟主机有几百,那你就要考虑suExec或者自己改apache
什么是“Minstruster的办法就可以了”?谢谢
你说的方法我先前试过的,可是好像根本没有用,不知道是不是因为我写的不对。
如下,虚拟主机上设的user/group根本没用,mkdir后还是main用户的。User main
Group main<VirtualHost 192.168.0.3>
ServerAdmin [email protected]
DocumentRoot /home/aaa/html
ServerName
User aaa
Group aaa
ErrorLog /home/aaa/logs/error_log
CustomLog /home/aaa/logs/access_log common
</VirtualHost><VirtualHost 192.168.0.4>
ServerAdmin [email protected]
DocumentRoot /home/bbb/html
ServerName
User bbb
Group bbb
ErrorLog /home/bbb/logs/error_log
CustomLog /home/bbb/logs/access_log common
</VirtualHost>
$dir="test";
mkdir($dir,0777);
$fp=fopen("$dir/abc",a);
fputs($fp,"hello world!!");
fclose($fp);
?>我在linux7下测试后,目录所有都为nobody:nobody