2013-12-10 139 views
1

我使用mkdir() foreach循環中創建我的文件夾:()無法訪問

if (!file_exists($id)) 
{ 
    mkdir($id); 
} 

$id可能是529e1f4070b0c

文件夾中創建,但訪問它們的時候通過FTP或直接從直接管理文件管理器,我遇到沒有這樣的文件或目錄,也404通過瀏覽器訪問時未找到頁面。

怎麼了?

#UPDATE 1

我刪除foreach循環和分配$id手動行之有效,文件夾中創建和可訪問,但是當它裏面foreach,創建文件夾,但不能訪問!

#UPDATE 2

我改變了代碼,使用全路徑作爲推薦意見:

if (!file_exists(dirname(__FILE__)."/".$id)) 
{ 
    mkdir(dirname(__FILE__)."/".$id, 0777); 
} 

這也導致先前的結果!

#UPDATE 3

塊的完整代碼:

$file = file("codes.txt"); 
foreach ($file as $id) 
{ 
    $html = content_of_url($id); 
    if (!file_exists(dirname(__FILE__)."/".$id)) 
    { 
     mkdir(dirname(__FILE__)."/".$id, 0777); 
    } 
    $dom = new domDocument; 
    $dom->loadHTML($html); 
    $dom->preserveWhiteSpace = false; 
    $images = $dom->getElementsByTagName('img'); 
    foreach ($images as $i => $img) 
    { 
     $url = str_replace("../..", "http://domain.com", $img->getAttribute('src')); 
     file_put_contents(dirname(__FILE__)."/".$id."/".$i.".jpg", file_get_contents($url)); 
    } 
} 
+0

嘗試給完整路徑 –

+0

@VaheShadunts讓我試試。 – revo

+0

有什麼消息嗎? –

回答

0

使用下面

if (!is_dir($id)) 
{ 
    mkdir($id,0777); 
} 

假設你是一個 'ID文件夾' 文件夾裏面

創建文件夾

然後指定的路徑也

if (!is_dir('ID FOLDER'.$id)) 
{ 
    mkdir('ID FOLDER'.$id,0777); 
} 
+0

作爲php.net/mkdir說,'的模式是0777 default',我不認爲改變如果會影響'mkdir' – revo

+0

所產生的結果首先會清除您將文件夾放置在哪裏以及您如何訪問它們? – webzar

+0

我問我如何訪問它們。 'php'文件位於一個文件夾中,因此需要放置文件夾。 – revo

0

嘗試設置權限:)並設置遞歸=真正

$path = "folder/path/where/files/should/be/stored/"; 
mkdir($path , 0777, true); 

不要給文件名吧......先創建路徑,不是文件

$handle = fopen($path . "\ressource.txt", "r"); 

您可能需要更換/ \ \

+0

'的模式是0777 default' – revo

+0

,如果我沒有權限添加一個文件夾生病得到0644的權限。可能是因爲我的服務器上的php安全設置。不知道。但你應該檢查:) – Dwza

+0

我更新我的帖子,猜測這可能是現在的解決方案:) – Dwza

0

更改權限,這可能有幫助

+0

我做了,但沒有改變。 – revo

0

嘗試在Windows下使用反斜槓或在路徑中使用常量DIRECTORY_SEPARATOR。也可以嘗試更改權限。

0

您需要對「非apache」用戶訪問的文件夾設置權限。 使用chmod指令。 http://www.php.net/chmod

+0

他們在我的用戶下,而不是apache – revo

0

創建文件夾後,嘗試使用chmod()更改文件夾權限。