2010-07-30 33 views
3

我有一個PHP腳本:ZipArchive php類以root身份提取文件。爲什麼?

$extract_dir = "./"; 
$extract_file = "extractME.zip"; 

$zip = new ZipArchive; 
$res = $zip->open($extract_file); 
if ($res === TRUE) { 
    $zip->extractTo($extract_dir); 
    $zip->close(); 
    echo "ok"; 
} else { 
    echo "failed"; 
} 

但是,當我執行這個腳本,通過http://www.mywebsite.com/extract.php

所有文件上的FTP是展示與業主「根」,而不是用戶前。 'neo',因爲它應該是。所以用戶不能編輯/重命名/刪除這些文件。

是否有可能解決這個問題(我自己的服務器),該文件將被提取'用戶名'所有權?

回答

0

它提取爲運行網絡服務器的用戶(注意:你不應該以root身份運行它)。嘗試使用chown

+0

chown不工作,因爲chown只能用於根服務器用戶。我不想讓任何用戶(甚至是主用戶)登錄VIA root。而chown與用戶級別無關。所以這可能是服務器配置問題。我經常運行「chown -R usrNAME:usrNAME/home/usrNAME/public_html/*」,但這是錯誤的解決方案 – ozzWANTED 2010-07-30 11:47:58

+0

@ozzwanted這不是我的意思。我建議在解壓縮文件後將這些文件縮小 - 這就是爲什麼我鏈接了php的chown命令。它*是*可能的,因爲你的web服務器以root身份運行。 – Maerlyn 2010-07-30 12:34:50

3

ozzwanted,由於某種原因,您的Web服務器(apache)以root用戶身份運行,因此它所作的任何文件都將以root用戶身份運行。這絕不應該是這種情況。根據linux發行版的不同,apache通常以「www-data」或「httpd」,或「nobody」或「god」運行。

我建議你從系統管理員的角度來看待這個問題,並在你最終被利用之前讓某人爲你整理它。 (假設這是一個活的服務器)

你可以使用www.php.net/chown函數或者你可以在命令行上運行'chown'命令或者使用類似於system()或exec(PHP) ) 功能。

祝你好運。

相關問題