| |
|
|
| | В директории формируются текстовые файлы, которые я читаю так:
$dir = opendir ("ref/.");
readdir ($dir);
readdir ($dir);
while ( $file = readdir ($dir))
{
$sod = @file_get_contents ("ref/" . $file);
echo "<br>Файл $file Содержимое $sod";
}
closedir ($dir);
|
При этом на сервере обнаруживается безымянный файл .txt, причем содержимое этого файла меняется со временем. Если же заглянуть в папку по ftp, то там этого "безымянного" файла я не вижу.
Как это объяснить?
P.S. Из логики работы скрипта, безымянный текстовый файл там появиться может. Но мне надо непременно отловить момент его появления и первоначальную информацию, так что меня больше всего интересует, почему я этот файл по ftp не вижу?! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.02.2008 в 11:31)
| | | А какое содержимое этого файла, помойму это у вас директория отлавливается.
Я обычно создаю вот такие конструкции, чтобы исключить директории.
<?php
while ( $selfilemod = readdir ($mdir)) {
//if (( $selfilemod != ".") && ($selfilemod != "..")) {
if (( $selfilemod != ".") && ($selfilemod != "..") && preg_match("/php|html|htm/i",strrchr($selfilemod, "."))) { //gif|bmp|jpg|png|jpeg|zip|swf|pdf|doc|txt|xls
$datamod = file ($dirmod.$selfilemod);
.......................
.......................
?>
|
| |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.02.2008 в 11:31)
| | | Я вот только не пойму: зачем перед циклом дважды читать содержимое директории?
$dir = opendir ("ref/.");
while ( $file = readdir ($dir))
{
$sod = @file_get_contents ("ref/" . $file);
echo "<br>Файл $file Содержимое $sod";
}
closedir ($dir);
|
А где код, который создает файлы? В нем вероятно ошибка. | |
| |
|
|
| |
|
|
| |
для: AVS
(26.02.2008 в 12:59)
| | | Чтобы указатель чтения пропустил те самые ярлыки "." и ".." | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.02.2008 в 11:31)
| | | В мануале посмотрите
<?
$dir = opendir ("ref/.");
while (false !== ($file = readdir ($dir))) {
if ($file == '.' || $file == '..') continue;
$sod = @file_get_contents ("ref/" . $file);
echo "<br>Файл $file Содержимое $sod";
}
closedir ($dir);
?>
|
| |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.02.2008 в 11:31)
| | | Какая ОС стоит на сервере? | |
| |
|
|
| |
|
|
| |
для: Shiva
(26.02.2008 в 16:07)
| | | Операционка FreeBSD.
Проделал вот такой ненаучный эксперимент.
Создана новая и пустая папка 555.
Запускаем скрипт
$dir = opendir ("555/.");
while (false !== ($file = readdir ($dir))) {
if ($file == '.' || $file == '..') continue;
$sod = @file_get_contents ("ref/" . $file);
echo "<br>Файл $file Содержимое $sod";
}
closedir ($dir);
|
На экране пусто.
Тогда запускаем вот такой скрипт:
$dir = opendir ("555/.");
while (false !== ($file = readdir ($dir))) {
//if ($file == '.' || $file == '..') continue;
$sod = @file_get_contents ("ref/" . $file);
echo "<br>Файл $file Содержимое $sod";
}
closedir ($dir);
|
И на экране ценая куча мусора:
Файл . Содержимое q^ .:х\ ..Т^ zakladka.txt‡ЕНЪ^ ss.ru.txt.txtЂiК! ^.txtр@ЙУ^¤luckytime.ru.txt ®Иmemori.ru.txtaМW^ hghltd.yandex.net.txtЃК6^Tvova.txtђ^@vkontakte.ru.txt ўк
Файл .. Содержимое
Вероятно, какой-то кеш выбрасывается вместо файла с точнкой... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.02.2008 в 19:00)
| | | какой смысл имена файлов, взятые из списка каталога 555/ , пытаться искать и открывать в контексте каталога ref/ ? | |
| |
|
|
| |
|
|
| |
для: Trianon
(26.02.2008 в 19:04)
| | | Вы правы, это моя ошибка. А если так:
$dir = opendir ("555/.");
while (false !== ($file = readdir ($dir))) {
//if ($file == '.' || $file == '..') continue;
$sod = @file_get_contents ("555/" . $file);
echo "<br>Файл $file Содержимое $sod";
}
closedir ($dir);
|
Выводится:
Файл . Содержимое f^ .:х\ф..
Файл .. Содержимое
Все равно файл с точкой что-то содержит. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(26.02.2008 в 19:25)
| | | "файл с точкой" это ссылка на текущий каталог.
Какой смыcл применять к нему file_get_contents ?
Записи "." и ".." не просто так выкидываются при пробеге справочника.
Они не указывают на потомков каталога. | |
| |
|
|
| |
|
|
| |
для: Trianon
(26.02.2008 в 19:49)
| | | Вы правы, спасибо!
Мне долго не удавалось обнаружить источник ошибки, и я начал искать "не там, где потерял, а там, где светлее".
Причина оказалась совсем в другом, и теперь устранена.
Еще раз спасибо! | |
| |
|
|