客服通过 FTP 上传文件的时候,所有文件默认是 ROOT 用户权限的,导致 PHP 文件无法读写创建.
只有通过 chown www:www 来进行对每个文件的设置才可以.
请问有办法通过 PHP 来操作吗?
ringa_lee2017-04-11 09:18:51
bool chown ( string $filename , mixed $user )可以改的。php好像还有chmod,不过建议直接在服务器上改权限吧。
“客服通过 FTP 上传文件的时候,所有文件默认是 ROOT 用户权限的,导致 PHP 文件无法读写创建.”
看样子“客服”使用的是root登录,上传的文件所有者自然属于root用户了。
一般的情况,文件夹权限755,文件644。比如在nginx上的文件权限设定,一般用以下指令可搞定(具体文件夹路径自行更改): chown -R www:www /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 www:www /usr/share/nginx/html/ && find /usr/share/nginx/html/ -type d -exec chmod 755 {} ; && find /usr/share/nginx/html/ -type f -exec chmod 644 {} ;'
!!!不过直接用root太不保险了,万一删错什么的就不好了,同时建议把ssh的root远程登录关闭了,别启用root用户的sftp来给客服用。
因此,更建议创建一个一般权限的用户给客服使用。为了方便,最好将并将这个用户放到www组中。
当然这样得的话,遇到需要有www:www权限读写时还是得需要手动给予文件们664权限了,保证同组的用户可以读写文件。
巴扎黑2017-04-11 09:18:51
可以用这个函数boolchown(),不过不太安全,最好是能在服务器上直接改,这个也需要root权限才能执行,最好ftp的账户是和php进程的用户保持一致