2009-08-24 48 views
1

環境信息創建一個文件夾:
* Windows Vista中
* PHP 5.2.9-2不能用的mkdir

我工作的一個項目。假設它的名字只是「項目」。我意味着用戶交互的PHP文件將在

項目/ file.php

找到現在,我有這背後和一些地圖,其中包含一般類和配置文件的數據庫。還有一個供用戶使用的地圖,我在那裏存儲他們可能上傳的圖像。例如:

項目/文件/用戶/ 0/profilePic.jpg

編號對應與數據庫中的USER_ID。

register.php文件中包含這行代碼:

mkdir('/files/Users/'.$id) 

$id變量是在數據庫中最大的ID號,加1

但它不會工作。我檢查了文件夾,我有讀寫權限(我是我的機器上的管理員)。

我在做什麼錯?

注意:有權告訴我有一個更好的方法來組織這個保留給那些誰可以給我一個有用的答案。 :P

回答

7

這是怎麼回事?

mkdir('c:/files/Users/'.$id) 
+0

嗯,它做了竅門,但問題依然存在:爲什麼前面的代碼不起作用? – KdgDev 2009-08-24 20:17:47

+1

嘿,在windows中你必須指定驅動器號,系統不會做出任何假設。 – 2009-08-24 20:33:29

+1

很明顯,爲什麼它沒有工作,因爲路徑「/文件/用戶/」不存在於PHP +窗口。起始斜線表示絕對路徑,它不存在於窗口上。 如果您想要相對路徑,只需放下第一個斜線即可。 – Henri 2009-08-24 20:35:59

2

夫婦的可能性:

  1. 失去了第一/因爲這給出了一個絕對路徑,你就希望做一個相對路徑 - 這樣的mkdir('文件/用戶/'.$ id)
  2. 文件/用戶是否已經存在(即,是否已有用戶0,用戶1等)?如果不是,您需要先創建它們,或者執行mkdir('files/Users /'.$ id,077,true)遞歸創建目錄。
+0

'文件/用戶'已經存在。所有用戶已經存在(使用phpMyAdmin進行數據庫管理) – KdgDev 2009-08-24 20:22:11

+0

相對路徑與絕對路徑,就是這樣。 – KdgDev 2009-08-24 20:33:07

1

在windows中,路徑不以'/'開頭,而是以驅動器號開頭。只需刪除第一個斜槓(所以'/ files/users /'變成'files/users /')。

此外,馬克說了什麼。

0

PHP聲明它在轉換/系統間做了最好的嘗試。在做:

mkdir('/files/users'); 

混淆的PHP認爲它是在* NIX系統。通過將根設置爲c :,現在它能夠正確解析參數並推斷出它是一個Windows系統

+0

因此,PHP不會嘗試檢測它運行的是什麼類型的系統,而是嘗試根據您傳遞給mkdir的參數進行猜測? – Stewart 2010-07-06 11:29:28

+0

一個簡單的答案是肯定的。它已經知道它遵循系統後運行的操作系統。 – MANCHUCK 2010-07-06 14:07:04