客服透過 FTP 上傳檔案的時候,所有檔案預設是 ROOT 使用者權限的,導致 PHP 檔案無法讀寫建立.
只有透過 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 {} ;'
<code>-----</code>
另一個伺服器用的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的時候。