Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Какая-то чешуя с файловыми потоками

10K
26 июля 2005 года
seniorleo
10 / / 26.07.2005
Пишу следующее

<?

$infile = "d:\probe.txt";

$outfile = "d:\newprobe.txt";

$in = fopen($infile,"r+");

if (!$in)
{
echo "Unable to open file!!!!";

exit();

}

else

echo "OK!!!";

$cont = fread($in,filesize($infile));

$cont = str_replace("времена","",$cont);

fclose($in);

$out = fopen($outfile,"w+");

fwrite($out,$cont);

fclose($out);

?>

первый поток открывается нормально и закрывается тоже по всей видимости нормально

а второй никак открыться не может
вот что пишется в логе сервера

[Tue Jul 26 13:56:20 2005] [error] [client 127.0.0.1] ewprobe.txt) [function.fopen]: failed to create stream: Invalid argument in c:\Program Files\Apache Group\Apache\htdocs\Probes\search.php on line 27

[Tue Jul 26 13:56:20 2005] [error] [client 127.0.0.1] PHP Warning: fwrite(): supplied argument is not a valid stream resource in c:\Program Files\Apache Group\Apache\htdocs\Probes\search.php on line 29

[Tue Jul 26 13:56:20 2005] [error] [client 127.0.0.1] PHP Warning: fclose(): supplied argument is not a valid stream resource in c:\Program Files\Apache Group\Apache\htdocs\Probes\search.php on line 31

короче первая ошибка вылезает там где я пытаюсь открыть поток $out - понять никак не могу что за беда

w+ - Открыть для чтения и записи; поместить указатель в начало файла и усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.

Всё вроде правильно а ошибка выдаётся - в чём проблема?
365
26 июля 2005 года
MasterSID
230 / / 23.02.2003
Дело в том, что при объявлении перемнных, содержащих имена файлов ты пользовался обратным слэшем (\). Наиболее грамотно использовать обычный слэш (/), т.к. если ты запустишь свой скрипт на сервере, где стоит юниксовая операционка то он еще не такое выдаст :) Мой тебе совет юзай при адресации слэш (/)

А сама проблема скорее всего в том, что использовал обратный слэш внутри парных кавычек, а там он используется для экранирования последующих символов. Т.е. ты просто экранировал следующий за этим бэкслэшем символ. Чтобы в это убедиться попробуй вывести эти переменные на экран через echo

Варианты решения:
1. Использовать слэш (/)
2. Экранировать обратный слэш (\\)
3. Использовать одинарные кавычки
365
26 июля 2005 года
MasterSID
230 / / 23.02.2003
Первый файл открылся потому, что (\p) не является спец символом, а во втором случае получилось (\n), что означает объявление новой строки.
10K
26 июля 2005 года
seniorleo
10 / / 26.07.2005
Цитата:
Originally posted by MasterSID
Первый файл открылся потому, что (\p) не является спец символом, а во втором случае получилось (\n), что означает объявление новой строки.



Спасибо большое всё получилось

Мастер он и есть мастер!!!

365
26 июля 2005 года
MasterSID
230 / / 23.02.2003
Не нужно меня в краску вгонять :) я еще только учусь :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог