我有下面的代碼在PHP 5.2.4(無safe_mode設置)Linux服務器:
mkdir($path, 0777, true);
當我進入像路徑
:
'/path/to/create/recur/ively/'
所有目錄除了最後一個...... 創建當我添加其他目錄,如:
'/path/to/create/recur/ively/more/'
再次,是除了最後一個創建的所有路徑...
試圖既沒有結尾的斜槓
能ANY1開導我在這裏嗎?
我有下面的代碼在PHP 5.2.4(無safe_mode設置)Linux服務器:
mkdir($path, 0777, true);
當我進入像路徑
:
'/path/to/create/recur/ively/'
所有目錄除了最後一個...... 創建當我添加其他目錄,如:
'/path/to/create/recur/ively/more/'
再次,是除了最後一個創建的所有路徑...
試圖既沒有結尾的斜槓
能ANY1開導我在這裏嗎?
好的解決方案如下:沒有問題。
我沒有隔離測試的代碼,但只承擔了下面的代碼沒有做任何的目錄結構...
,因爲我發現了目錄得到了由代碼本身刪除以後。
無論如何,課程了...
嘗試從路徑中刪除尾部斜線。
至少這就是它在mkdir
文檔的例子中的使用方式。
就我個人而言,我不記得有問題,但我通常不會追加尾部的斜槓,所以去試試吧。
UPDATE:
我只是想你的代碼,它創建的每個目錄,包括最後一個。 我正在運行Mac OS X 10.5。不知道爲什麼它不工作了:-(
這是我使用的代碼:
<?php
$path = '/Users/andre/test/bla/foo';
mkdir($path, 0777, true);
對不起,好像我沒有幫助在這裏
這是關於我做的第一件事,但它仍然產生相同的結果... – NDM 2009-09-09 11:48:25
什麼是你的PHP版本的safe_mode開啓
?如果是這樣,那麼它可能是你正在經歷http://bugs.php.net/bug.php?id=43276
5.2.4沒有safe_mode,所以它不適用,我也嘗試過和沒有尾隨斜線,所以.... – NDM 2009-09-09 12:25:21
創建的中間目錄是基於當前的umask設置。你想要這樣的東西
umask(0777);
mkdir($path, 0777, true);
創建給定路徑的所有目錄(文件夾)的函數。不需要編寫代碼來創建給定路徑的每個目錄(文件夾)。它會創建所有目錄(文件夾)。
一樣:如果你要創建的目錄結構像
組織/ 1 /用戶/ 1/
所以,你只需要調用與目錄的路徑該功能類似
$ directories_path =「組織/ 1 /用戶/ 1 /';
createUploadDirectories($ directories_path);
/*
* Method Name : createUploadDirectories
* Parameter : null
* Task : Loading view for create directries for upload
*/
if (! function_exists('createUploadDirectories')){
function createUploadDirectories($upload_path=null){
if($upload_path==null) return false;
$upload_directories = explode('/',$upload_path);
$createDirectory = array();
foreach ($upload_directories as $upload_directory){
$createDirectory[] = $upload_directory;
$createDirectoryPath = implode('/',$createDirectory);
if(!is_dir($createDirectoryPath)){
$old = umask(0);
mkdir($createDirectoryPath,DIR_WRITE_MODE);// Create the folde if not exist and give permission
umask($old);
}
}
return true;
}
}
如果你做出愚蠢的錯誤我沒有和傳遞一個字符串,而不是數字字面模式你會得到這個錯誤。
mkdir($path, "0777", true); // BAD - only creates /a/b
mkdir($path, 0777, true); // GOOD - creates /a/b/c/d
請發佈您正在使用的PHP的確切版本。另外,您的主機是否在啓用safe_mode的情況下運行? – 2009-09-09 12:01:41
什麼是您的error_reporting級別?如果出現問題,則提出E_WARNING。安全模式關閉,但您的PHP版本是否包含suhosin?你如何(以及從哪裏)安裝PHP?從「香草」php.net源代碼編譯?通過你的發行版的包管理器(它是哪一個,包的確切名稱是什麼)?函數php_plain_files_mkdir()(負責PHP函數mkdir(x,y,true))並沒有改變很長一段時間,我還沒有在http://bugs.php.net找到相關的錯誤 – VolkerK 2009-09-09 13:42:27
因此,讓我總結:問題是「遞歸mkdir無法正常工作」,答案是「哦,我犯了一個錯誤,並在代碼中稍後刪除了該目錄」。那麼我真的很想知道爲什麼這個用戶有26個upvotes這個有價值的信息?我不認爲其他人有同樣的問題... – rob74 2018-03-08 16:43:49