2013-03-04 130 views
1

我在一個名爲'拇指'的文件夾中有文件。他們的名字基於他們如何被他們的原作者命名/重命名。我想重新命名他們是數字順序兩年我設法找到這個PHP代碼:如何使用PHP按順序重命名文件夾中的文件?

function sequentialImages($path, $sort=false) { 
$i = 1; 
$files = glob($path."/{*.gif,*.jpg,*.jpeg,*.png}",GLOB_BRACE|GLOB_NOSORT); 

if ($sort !== false) { 
    usort($files, $sort); 
} 

$count = count($files); 
foreach ($files as $file) { 
    $newname = str_pad($i, strlen($count)+1, '0', STR_PAD_LEFT); 
    $ext = substr(strrchr($file, '.'), 1); 
    $newname = $path.'/'.$newname.'.'.$ext; 
    if ($file != $newname) { 
    rename($file, $newname); 
    } 
    $i++; 
} 
} 

執行這段代碼的PHP被稱爲「rename.php」?它是一個名爲「管理文件夾中找到」。

因此,有如下幾點

  1. '管理員' 文件夾(包含rename.php')
  2. '大拇指' 文件夾(包含隨機名稱的圖像)

兩個文件夾是同一級別。

如何執行'rename.php',如果兩者都在不同的文件夾中。

我試圖包括$path = '../thumbs';但它沒有起作用。

爲什麼不工作?

+0

好問題是「它說什麼?」 :)給我們錯誤消息,這裏的某個人可能會幫助你;)另外,你不應該'包含'/'require'位於「admin」文件夾中的文件嗎? – 2013-03-04 17:19:57

+0

在這種情況下,它仍然是一個空白頁面。沒有錯誤夠奇怪。 – MtDemonics 2013-03-04 17:28:57

回答

0

在你的函數添加的頂部:

if(!is_dir($path)) { 
    die("error: $path is not a valid directory."); 
    // or whatever error handling method you prefer 
} 

如果由於某種原因,父路徑是在服務器上禁用,或者如果有一些其他問題的路徑,你會在這裏通知。

如果這工作正常,然後逐步通過您的代碼,並確保一切都如您所期望的那樣。例如:$files有你期望的內容,$newname格式正確,rename()沒有返回false這表明有可能是由於權限等錯誤...

+0

在這種情況下,它告訴我_error:$ path不是一個有效的目錄._我輸入了你的代碼。現在,當我輸入_ $ path ='../thumbs';_它給了我同樣的錯誤 – MtDemonics 2013-03-04 17:31:10

+0

@MtDemonics我把單引號而不是雙引號。你應該檢查你的服務器配置以查看是否啓用了父路徑。 – Sammitch 2013-03-04 17:53:00

+0

我設法消除了錯誤,但腳本仍然無法正常工作。 – MtDemonics 2013-03-04 17:56:17

1

我想我會開始檢查,如果你實際上得到任何錯誤報告。既然你說你只有一個沒有任何錯誤的空白頁面,它可以像啓用錯誤報告一樣簡單,以查看實際發生了什麼錯誤。

例如,如果PHP沒有對thumbs文件夾的寫入權限,當您嘗試重命名文件時,您可能會收到一堆警告。檢查你的php.ini並確保display_errors = On,再次運行腳本並檢查是否有任何有用的錯誤消息。

不知道這是否對您有幫助(或者display_errors已經設置爲開啓),但這將是我嘗試的第一步,希望能夠爲您提供有關哪裏出錯的更多細節。