Чудны́ дела твои, PHP!

Может быть кто-то заметил, что у меня аватары в комментариях отваливались, я довольно долго не мог найти время и посмотреть что происходит, а вчера, вот, поправил. Дело оказалось в том, что мой хостер выставил директиву open_basedir и копирование аватара с интернета на файловую систему отвалилось.

Я делал это функцией copy, первом аргументом передавал УРЛ, вторым — путь на файловой системе. В логах, после изменения конфигурации, ПХП ругался, что «http://» — это неправильное начало для разрешённого пути. Удивительно, но стоило заменить copy на её, фактически, эквивалент, как всё заработало:
if ($fin = fopen($url, 'rb') and $fout = fopen($file, 'wb')) {
    stream_copy_to_stream($fin, $fout);

    fclose($fout);
    fclose($fin);

    return true;
} else {
    return false;
}
Такое поведение больше похоже на баг, ПХП у меня не последний (5.3.21 сейчас), может поправили уже.
27 марта 2013 19:22

Slach (slach.livejournal.com)
28 марта 2013, 07:10

а какое значение стоит для allow_url_fopen ?

Евгений Степанищев (bolknote.ru)
28 марта 2013, 07:25, ответ предназначен Slach (slach.livejournal.com):

«On», иначе как бы это работало?

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)