PHP 如何将 linux 服务器的 root 权限目录改为 www:www
只有通过 chown www:www 来进行对每个文件的设置才可以.
请问有办法通过 PHP 来操作吗?
回复内容:
客服通过 FTP 上传文件的时候,所有文件默认是 ROOT 用户权限的,导致 PHP 文件无法读写创建.
只有通过 chown www:www 来进行对每个文件的设置才可以.
请问有办法通过 PHP 来操作吗?
你说:他们的服务器,他们喜欢用这个 SFTP 直接传文件,然后导致程序不能创建目录改写文件之类的。这个是必然,你可以把他们登录sftp的用户用usermod -aG www [username]加入到www这个组里面,把www用户加入你传文件的那个用户的组里面,这样www和传文件的用户就是一个组的了,这样得给予文件们664权限。
(我就用过的这个方法,本地用syncthing以及atom编辑器(属于users组下)和web服务器(nginx组)互通同步文件。不过我是把web服务器chown给users的)
对,bool chown ( string $filename , mixed $user )可以改的。php好像还有chmod,不过建议在服务器上改吧, chown -R www:www /path/
一般文件夹权限给个755,文件给个644。用以下指令可搞定(具体文件夹自行更改): chown -R nginx.nginx /usr/share/nginx/html/ && find /usr/share/nginx/html/ -type d -exec chmod 755 {} \; && find /usr/share/nginx/html/ -type f -exec chmod 644 {} \;
我是把它写入bashrc,总不能下次要用又敲一次吧:alias webroot='chown -R nginx.nginx /usr/share/nginx/html/ && find /usr/share/nginx/html/ -type d -exec chmod 755 {} \; && find /usr/share/nginx/html/ -type f -exec chmod 644 {} \;'
-----
另一个服务器用的sftp传文件,用户属于users组下的aaa,我传文件前打开ssh,先把文件全部权限搞成属于users的aaa,在bashrc里面写入alias的,也不麻烦,传完了再弄回去,还是上面的好点,毕竟你们要用stfp,把root随便给出去用也不太安全)
你要是图方便 直接把文件夹chown -R 777就可以
ftp用户设置一下权限不行?
别用root登录嘛,win下传过去的吧,ftp工具一般可以改,比如xftp,可以修改传过来的文件夹和文件权限,并且保持后续传进来的也是如此的权限
可以用这个函数boolchown(),不过不太安全,最好是能在服务器上直接改,这个也需要root权限才能执行,最好ftp的账户是和php进程的用户保持一致
shell 中 使用 chown 命令,之前也遇到过这样的问题,配置lamp的时候。