2015-04-27 34 views
-1

我以下爲PHP創建一個新的文件的指導,我是使用下面的代碼:用於創建新文件的fopen錯誤?

function create($user, $name) { 
 
\t \t /* Later on, this will connect to another server*/ 
 
\t \t $dir = $user->getFolder() . "/Projects/". $name; 
 
\t \t if(file_exists($dir)) { 
 
\t \t \t $this->error = "Directory: " . $dir . " already exists."; 
 
\t \t } else { 
 
\t \t \t mkdir($dir); 
 
\t \t \t //Create the users.json file and add the owner 
 
\t \t \t $json = fopen($dir . "/Data/users.txt", "w") or die("Cannot open file"); 
 
\t \t \t fclose($json); 
 
\t \t } 
 
\t }

的目錄中創建,但我收到以下錯誤:「警告:FOPEN (Jake/UserFolder // Projects/test/Data/users.txt):無法打開流:第14行D:\ xampp \ htdocs \ Collabs \ Objects \ Scripts \ Project.php中沒有這樣的文件或目錄 無法打開文件「

回答

1

錯誤中顯示的路徑看起來像它可能是問題。

Jake/UserFolder//Projects/test/Data/users.txt

UserFolder和Projects之間有兩個斜線。它看起來像改變你的代碼

$dir = $user->getFolder() . "Projects/". $name; 

會擺脫額外的斜線。

+0

Omg。哇,我不相信我做到了。非常感謝! –

+0

這是否解決了問題?我在發佈回答後發現,似乎這個路徑會導致'mkdir'問題,並且你說這是行得通的。 –

+0

它做到了,之後我注意到'/ Data /'沒有被創建......大聲笑,所以這就是我發現的和你發現的 –

0

一對夫婦的事情,可能出現了問題。

  1. 你沒有通過的路徑與一家領先的/,所以fopen()會比較搜索,在腳本執行的目錄我假設你會想傳遞一個絕對路徑
  2. 您是file_exists()測試,你也應該檢查is_dir(),以捕捉和處理的情況下,具有相同路徑的文件已經存在
  3. 你可能會考慮以創建0123調用中介目錄(見mkdir() documentation