2008-10-31 64 views
2

我有以下問題,因爲服務器的安全模式開啓,和目錄正在不同的用戶下創建:繞過PHP安全模式寫入服務器。可能嗎?

  1. 我上傳我的腳本到服務器,它顯示爲屬於用戶「user1」。它所做的只是在創建新用戶時創建一個新目錄,以便可以在其中存儲文件。
  2. 創建新目錄,但它屬於'apache'用戶。
  3. 'user1'和'apache'是不同的用戶;並打開安全模式。所以php腳本不能寫入新創建的目錄。
  4. 現在我有一個問題!

一個解決方案是關閉安全模式。另外,同事建議可以更改設置以確保目錄與腳本位於同一用戶下。所以我期待看看後者是否可以完成。我不得不問。有問題的解決方案嗎?

我傾向於一個'不',因爲安全模式被實現來解決它在PHP級別。此外,實際問題可能看起來像是在不同用戶下創建的目錄,所以編程修復可能只是一個創可貼修復。

回答

4

我用這個解決方法:

,而不是PHP的mkdir您可以創建FTP具有相應權限的目錄。

function FtpMkdir($path, $newDir) { 
     $path = 'mainwebsite_html/'.$path; 
     $server='ftp.myserver.com'; // ftp server 
     $connection = ftp_connect($server); // connection 


     // login to ftp server 
     $user = "[email protected]"; 
     $pass = "password"; 
     $result = ftp_login($connection, $user, $pass); 

     // check if connection was made 
     if ((!$connection) || (!$result)) { 
      return false; 
      exit(); 
     } else { 
     ftp_chdir($connection, $path); // go to destination dir 
     if(ftp_mkdir($connection, $newDir)) { // create directory 
      ftp_site($connection, "CHMOD 777 $newDir") or die("FTP SITE CMD failed."); 
      return $newDir; 
     } else { 
      return false; 
     } 

     ftp_close($connection); // close connection 
     } 

    } 
0

您可能可以通過.htaccess文件(如果在Apache上)關閉特定目錄的安全模式。

php_value safe_mode = Off 

您可能需要讓您的託管服務提供商在httpd.conf中爲您做出此更改。