на разных серверах По разному обрабатывается скрип!почему не подскажите?

LEOnidUKG

Новичок
на разных серверах По разному обрабатывается скрип!почему не подскажите?

Здравствуйте.
Есть скрипт:
файл test.php

PHP:
$dir = "123";  
 $dh  = opendir($dir); 
 while ($filename = readdir($dh)) {     
 $filename = $dir."/".$filename;   
   include_once($filename);  
 echo "<p>";  
}
Этот скрипт выводит содержимое всех файлов, которые находятся в папке 123. Тестировал дома на EasyPHP, в папке 123 находятся файлы 1.php 2.php 3.php
с содержанием для теста <? echo '1' ?> и т.д. по порядку. Ну так вот дома при запуске файла test.php мне на экран выводится:
1
2
3
Всё нормал... Заливаю на сервак т.е. на хостинг! о ужас, этот же скрипт мне выкидывает
1
3
2

??? Никто не подскажет почему так происходит ???
 

LEOnidUKG

Новичок
наверное чёт я не доганяю...
подредактировал чуть-чуть...
PHP:
$dh  = opendir(123); 
while (false !== ($filename = readdir($dh))) { 
   $filename = "123/".$filename; 
echo '<p>';
include_once($filename); 
} 
closedir($handle);
глюк остался...
значит сортировка зависен от фаловой системы на серваке? или чёто типо этого???
Если так возможно какнибудь сортировку впихнуть в этот скрипт?
 

sage

Новичок
LEOnidUKG
мой пост ещё раз внимательно прочитай. и прежде чем что-то редактировать, подумай, что это изменит.
 

LEOnidUKG

Новичок
2Sage я прочитал... ты мне переведи эту строчку, а то чёт я перевёл и до меня реально не допирает.

залил на хостинг, пример из мануалов:

<?php
if ($handle = opendir('123')) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
include ($file);
}
closedir($handle);
}
?>

во ответ мне только:
Warning: main(1.php): failed to open stream: No such file or directory in /home/chatukg/public_html/test3.php on line 5
Warning: main(): Failed opening '1.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/chatukg/public_html/test3.php on line 5
Warning: main(): open_basedir restriction in effect. File(./..) is not within the allowed path(s): (/home/chatukg/:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/chatukg/public_html/test3.php on line 5
Warning: main(..): failed to open stream: Operation not permitted in /home/chatukg/public_html/test3.php on line 5
и т.д.
 

MadGreen

meninweb
LEOnidUKG
тебе умный человек пытался сказать что имена файлов на сервере функция выдает в том порядке в котором они хранятся в файловой системе...
посему сортируй сам...
если хочешь по имени и так чтобы было все красиво посмотри natsort();
 

Фанат

oncle terrible
Команда форума
что жы все пишете функции сортировки МАССИВОВ, но ни один не напишет, что сначала надо в этот массив имена файлов ЗАГНАТЬ.
вместо вывода на экран
 

MadGreen

meninweb
предвидя вопросы: сначала получи в массив список файлов директории, а потом его отсортируй...
только после этого include_once

-~{}~ 02.07.06 00:51:

упс, видишь, я пытался, чуть опоздал :)
 

LEOnidUKG

Новичок
Благодарю 2MadGreen за: [имена файлов на сервере функция выдает в том порядке в котором они хранятся в файловой системе... ]
Ручками сортировать, так ручками... делов то...
 

LEOnidUKG

Новичок
Выкрутился чуть-чуть по другому:

PHP:
<?  
$dir = "123"; 
$dh  = opendir($dir); 
while ($filename = readdir($dh)) { 
$nom=$nom+1;
include($dir."/".$nom.".php"); 
} 
?>
 

mani13

Новичок
LEOnidUKG
мдаааааааа... не легче в таком случае
[m]while[/m]
[m]is_file[/m]
 

ThomLee

Новичок
А может, в таком случае, for() использовать?
опять же . и .. тоже ведь файлы... (см. структуру файловой системы Unix), их то ведь тоже надо учитывать.
А если у тебя будет пропущен какой-то файл и т.д.?
 

Altex

Новичок
На мой взгляд тоже это довольно странно использовать include для
"Этот скрипт выводит содержимое всех файлов, которые находятся в папке 123"
 
Сверху