2015-11-06 47 views
1

我有一個包含大約400個圖像url的摘錄文件(摘錄如下)。我編寫了下面的腳本來快速將文件從一臺服務器下載到另一臺服務器(無ssh訪問)。PHP copy()函數不能與txt文件中的項目列表一起工作

文本文件 - pics.txt

http://www.domain.com/pictures/name.jpg 
http://www.domain.com/pictures/name1.jpg 
http://www.domain.com/pictures/name2.jpg 
http://www.domain.com/pictures/name3.jpg 
http://www.domain.com/pictures/name4.jpg 

我簡單的PHP腳本:

$file = fopen("pics.txt", "r"); 

while(!feof($file)){ 

    $line = fgets($file); 
    $filename = basename($line); 
    $imagename = "tmp/$filename"; 
    echo "Trying to copy ".$line." to: ".$imagename; 

    if (copy($line,$imagename)) { 
     echo "Done file ".$line; 
    } else { 
     echo "Error occured"; 
    } 

} 
fclose($file); 

但是它似乎並沒有工作。我只是得到:

Trying to copy http://www.domain.com/pictures/name.jpg to: tmp/name.jpg Error occured 
Trying to copy http://www.domain.com/pictures/name1.jpg to: tmp/name1.jpg Error occured 
Trying to copy http://www.domain.com/pictures/name2.jpg to: tmp/name2.jpg Error occured 

如果我手動鍵入copy('http://www.domain.com/pictures/name.jpg', 'filename.jpg');

能正常工作?

任何想法我做錯了什麼?

+0

我只是評論的一切,並把一條線在PHP文件.. – rosey85uk

+0

確保文件夾具有適當的權限來寫它和路徑是正確的,存在使用錯誤報告。 。http://php.net/manual/en/function.error-reporting.php –

+0

但它工作時,我的硬拷貝行而不是動態地做它..我CHMOD 777 tmp目錄來測試。 – rosey85uk

回答

3

按照要求,併爲未來的讀者提出問題是什麼問題。

您的文件包含\n爲每行,並且是一個隱藏的文件字符,添加一個空間到您的URL,反過來打破它的真實路徑。使用trim()將擺脫多餘的空間。

使用錯誤報告:


從評論:

「謝謝你,我打開了錯誤報告,發現它在URL後面放了一個空格,即使文本文件中沒有。克里斯 - 「

」 @克里斯這是偉大的克里斯(歡迎你),我很高興,它被解決。然而,對於未來的讀者來說,所給出的答案並不是解決方案。我不想在這裏聽到壞人的聲音,或者破壞每個人的氣球;不要誤解我的意思。然而,既然如此,你應該使用trim()來擺脫尾隨空格。該空格來自隱藏的\n,該文件添加了一個空格。弗雷德 - -ii-」

+0

謝謝Fred!全部排序:-) – rosey85uk

+0

@Chris你非常歡迎克里斯。我很高興我們能夠查明確切原因,*歡呼聲* –

相關問題