2011-07-06 30 views
0

我正在使用PHP創建一個目錄。在創建目錄後,它會得到一個777的chmod。然後我有一個簡單的腳本讓用戶將文件上傳到目錄。我遇到的問題是當我運行腳本時,目錄不會完成文件傳輸。但是...如果我手動通過FTP進入並創建一個新目錄並將777分配給生成的文件夾,那麼腳本工作正常,文件被傳輸。是否有一些設置與我的虛擬主機限制了這種能力?或者它在PHP腳本中?這裏是我創建新目錄的代碼:在PHP中創建用於上傳的新目錄的難度

<?php 

$thisdir = getcwd(); 
$new_dir = 'test'; 
$full_dir = $thisdir . "/" . $new_dir; 

function chk_dir($full_dir) { 
if(is_dir($full_dir)) { 
    echo 'the directory already exists'; 
} else { 
    return mkdir($full_dir); 
} 

} 
chk_dir($full_dir); 
chmod($full_dir, 0777); 
?> 

我知道這裏一定有一個簡單的解釋,謝謝你審查我的問題。

+0

從理論上講,如果該目錄是由PHP創建那麼將有權限寫入到該目錄,因爲它將擁有所有權。根本不需要設置權限。 – Tak

+0

@Tak我試着拿出chmod調用,並將權限設置爲「rwxr-xr-x」。另外,這些文件不能完成上傳。 – Presto

+0

我知道這與我使用的新主機有關。我已經在不同的託管平臺上測試過相同的腳本,它工作得很好。我應該問他們這個問題有什麼問題? – Presto

回答

0

檢查是否Safe_mode在您的服務器上打開。

mkdir()創建文件夾作爲所有者,它不是腳本所有者,因此腳本無法將文件上載到該文件夾​​中。雖然safe_mode打開chmod()不起作用。 文件:http://php.net/manual/en/features.safe-mode.php

嘗試添加這條線在PHP腳本的開始檢查警告:

ini_set('display_errors', '1'); 
+0

非常感謝!我會調查,看看是否是這樣。 – Presto

+0

我希望它有幫助! – Mike