Здравствуйте.
На странице
мануала по функции fopen сказано...
На платформе Windows, необходимо экранировать все обратные слеши в пути к файлу или использовать прямые слеши.
Я написал вот такой код (без экранирования символов), и он прекрасно работает:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$fopen_result_1 = fopen('folder\file.txt', "a+");
$content_1 = fread($fopen_result_1, filesize('folder\file.txt'));
echo $content_1;
echo '<br><br><br><br>';
$fopen_result_2 = fopen('folder/file.txt', "a+");
$content_2 = fread($fopen_result_2, filesize('folder/file.txt'));
echo $content_2;
Почему он работает? И не выдается никакой ошибки. Это был вопрос первый.
Вопрос второй. В мануале написано...
Так как установка флага трансляции по умолчанию зависит от SAPI и используемой версии PHP, рекомендуем явно задавать указанный флаг из соображений портируемости. Вы должны использовать режим 't', если вы работаете с текстовыми файлами и используете \n для обозначения конца строки в вашем скрипте, но при этом предполагаете, что ваши файлы будут использоваться в таких приложениях, как "Блокнот". Во всех остальных случаях используйте флаг 'b'.
А потом...
Замечание:
Из соображений портируемости, настоятельно рекомендуется всегда использовать флаг 'b' при открытии файлов с помощью fopen().
Замечание:
Кроме того, из соображений портируемости, также настойчиво рекомендуется переписать старый код, который полагается на режим 't', чтобы вместо этого он использовал правильные концы строк и режим 'b'.
Сначала говорится, что 't' нужно использовать при открытии текстовых файлов, а 'b' - при открытии бинарных. А потом - ВСЕГДА ИСПОЛЬЗОВАТЬ 'b'. Так что использовать? Не понятно. Можете объяснить?