символ перевода каретки, который в php - \r\n
Нет, это не так. Есть константа
PHP_EOL, которая в зависимости от платформы будет равна \n или \r\n или еще чему-нибудь. Если вы не используете эту константу, то будет зависеть от кодировки файла.
Проверьте кодировку, BOM, наличие \n в конце файла.
UPD: еще можно сравнить работающий и неработающий файлы при помощи diff.
Если php работает от имени www-data, не может ли это быть проблемой с правами?