PHP copy () не работает со списком элементов из текстового файла

1

У меня есть txt файл, содержащий около 400 URL-адресов для изображений (выдержка ниже). Я написал сценарий ниже, чтобы быстро загрузить файлы с одного сервера на другой (без доступа ssh).

Текстовый файл - 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 ..
  • 0
    убедитесь, что у папки есть надлежащие права на запись в нее, а путь правильный и существует. Используйте отчеты об ошибках. php.net/manual/en/function.error-reporting.php
Показать ещё 2 комментария
Теги:
php-5.5

1 ответ

3
Лучший ответ

По просьбе, и для будущих читателей вопрос о том, что на самом деле проблема.

Ваш файл содержит \n для каждой строки и является символом скрытого файла, добавляя пространство к вашему URL, в свою очередь, нарушая его истинный путь.

Использование trim() избавится от лишних пробелов.

Использовать отчет об ошибках:


Из комментариев:

"Спасибо, оба, я включил отчет об ошибках и заметил, что он помещает пробел после URL-адреса, хотя в текстовом файле нет его. - Крис"

а также

"@Крис, что великий Крис (приветствую вас), и я рад, что он был разрешен. Однако и для будущих читателей на вопрос ответ был действительно не решением. Я не хочу звучать как плохой человек здесь или перепутайте все воздушные шары, не поймите меня неправильно. Однако в этом случае вы должны были использовать trim() чтобы избавиться от конечных пробелов. Пространства поступают из скрытого \n в файл, который добавляет пространство. - Фред -ii- "

  • 0
    Спасибо, Фред! Все отсортировано :-)
  • 0
    @Chris Ты очень желанный Крис. Я рад, что мы смогли точно определить причину, ура

Ещё вопросы

Сообщество Overcoder
Наверх
Меню