2012-07-04 47 views
1

我們在我們公司使用的是Linux專用服務器。使用php創建的文件夾,由apache擁有

每當我們創建一個PHP腳本的文件夾,Apache是​​擁有我必須通過根連接到服務器,以改變所有者用戶和權限

的文件夾,每一次,但我不爲了解決這個問題,我知道應該更改哪個設置。

我試圖打開/關閉安全模式,但它沒有奏效。

我會很高興,如果有人可以幫助我

在此先感謝

+0

你使用的是什麼FTP /文件程序? – jared

+0

您可以在創建文件夾後使用chmod()。 – ActuallyMAB

回答

1

這是一個可移植性問題,取決於您的服務器配置(即mod_php或帶有SuExec的FCGI)。

您可以嘗試在創建文件後立即使用chown函數,但只有當您知道實際所有者應該是誰時(這並非總是如此),它纔會起作用。爲了克服這個問題,I wrote a simple method,試圖找到始終保證閱讀和寫作(以及執行的目錄)最佳的文件模式沒有給出過多的權限:

function xChmod($path, $chmod = null) // adapted from phunction 
{ 
    if (file_exists($path) === true) 
    { 
     if (is_null($chmod) === true) 
     { 
      $chmod = (is_dir($path) === true) ? 777 : 666; 

      if (extension_loaded('posix') === true) 
      { 
       $user = posix_getpwuid(posix_getuid()); 

       if (array_key_exists('name', $user) === true) 
       { 
        $chmod -= (in_array($user['name'], explode('|', 'apache|httpd|nobody|system|webdaemon|www|www-data')) === true) ? 0 : 22; 
       } 

      } 
     } 

     return chmod($path, octdec(intval($chmod))); 
    } 

    return false; 
} 

基本上,如果你忽略第二$chmod參數它將默認使用0777文件夾,0666文件默認使用0666文件,但是,如果PHP在非標準用戶下運行,它將使模式遞減22,文件夾產生0755,文件產生0644。請記住,這隻適用於已存在的文件,因此如果您要創建目錄you'll need to have additional precautions

+0

它不會將所有者更改爲我想要的用戶,但它使文件夾可寫,非常感謝。 –

2

有的方式來做到這一點:

chown()在那裏你可以通過執行該功能更改文件的權限。

或者如果您可以使用FTP移動文件,則可以將文件拖到文檔根目錄(public_html/)之外,然後右鍵單擊 - >更改文件的文件權限。

CHMODs是你想要看的。 777將爲任何人提供對您的文件的訪問權限,您可以將其用作測試以確保您擁有文件權限。儘管如此,我並不建議保留777的權限。

相關問題