Ошибка в PHP коде. Sourcebans.

Павел 01

Участник
Сообщения
81
Реакции
4
Вот ошибка:
o4xwSIiIZE4.jpg

А вот PHP код:
PHP:
<?
$dir = opendir ("./demo");
 $a =array();
while ($file = readdir ($dir))
if (stripos($file,".dem") != false) {
    $a[filemtime($file)] = $file;
  }
ksort($a);
$rev = array_reverse($a);
$len = count($rev);

echo '
<table>
<tr><th>Имя</th><th>Дата</th></tr>';

$arr = glob("*.dem");
for ($i = 0; $i < $len; $i++ ) {
echo '<tr><td><a href="'.$rev[$i].'">'.$rev[$i].'</a></td><td>'.date('H:i:s d-m-Y',filemtime($rev[$i])).'</td></tr>';
}
echo '</table>';
?>
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
А права на чтение стоят?
 

Павел 01

Участник
Сообщения
81
Реакции
4
Да конечно, другие флаги не могут быть, по любому чтение будет..
 

Павел 01

Участник
Сообщения
81
Реакции
4
PHP:
Warning: filemtime(): stat failed for test.dem in /var/www/html/crysisban.ru/pages/page.demo.php on line 6 Warning: filemtime(): stat failed for test.dem in /var/www/html/crysisban.ru/pages/page.demo.php on line 18
 

TWRP

Участник
Сообщения
317
Реакции
44
PHP:
<? 
$dir = opendir ("./demo"); 
 $a =array(); 
while ($file = readdir ($dir)) 
if (stripos($file,".dem") != false) { 
    $a[filemtime($file)] = $file; 
  } 
ksort($a); 
$rev = array_reverse($a); 
$len = count($rev); 

echo ' 
<table> 
<tr><th>Имя</th><th>Дата</th></tr>'; 

$arr = glob("*.dem"); 
for ($i = 0; $i < $len; $i++ ) { 
echo '<tr><td><a href="'.$rev[$i].'">'.$rev[$i].'</a></td><td>'.date('H:i:s d-m-Y',filemtime($rev[$i])).'</td></tr>'; 
} 
echo '</table>'; 
?>

это весь код ?

Павел 01, какая версия php?

проблема не в версии пшп
 

Павел 01

Участник
Сообщения
81
Реакции
4
Если $dir = opendir ("./demo"); , поменять на $dir = opendir (".");
Будет работать, но она берет не из той директории, которая мне нужна. Мне кажется это в коде что-то не так.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Павел 01, ну убери точку перед /demo
Короче, $dir = opendir ("/demo/"); сделай

Да и проверку бы делал, if(is_dir($dir)) { ... }
 

Павел 01

Участник
Сообщения
81
Реакции
4
Да весь код это, он должен выводить файлы с разрешением ".dem".

Добавлено через 3 минуты
Павел 01, ну убери точку перед /demo
Короче, $dir = opendir ("/demo/"); сделай

Да и проверку бы делал, if(is_dir($dir)) { ... }

Так как убрать начальную директорию, он по любому выдаст ошибку. Если ток с самого начала диска, то есть /home/sait/demo/
 
Последнее редактирование:

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Павел 01, а просто url поставить нельзя? ftp:// http:// file://
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
PHP:
while ($file = readdir ($dir))
замени на
PHP:
while (false !== ($file = readdir($dir)))
 

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
You go m8:
PHP:
<?
	$files = array();
	foreach (glob("./demo/*.dem") as $file) { $files[] = $file; }
	$len = count($files);

		echo<<<'head'
<table> 
	<tr>
		<th>Имя</th>
		<th>Дата</th>
	</tr>
head;

	for($i=0; $i < $len; $i++) {
		$date = date('H:i:s d-m-Y', filemtime($files[$i]));
		$blast = explode("/", $files[$i]); //массив из пути. Название файла — blast[2].
		echo <<<LIST
<tr>
	<td><a href='{$files[$i]}'>{$blast[2]}</a></td>
	<td>{$date}</td>
</tr>
LIST;
	}
echo "</table>";
?>

Дата работает. Точную причину бага с opendir не скажу, ибо так и не нашёл решения. Но и так можно, например.

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

Павел 01

Участник
Сообщения
81
Реакции
4
Добавить в SourceBans

Я добавил авто-залив демок на сайт, но в отдельную папку demos. А код берет из самого сайта, а нужно из demos. Можете оптимизировать код, заранее спасибо.:)
PHP:
<?
$dir = opendir (".");
 $a =array();
while ($file = readdir ($dir))
if (stripos($file,".dem") != false) {
    $a[filemtime($file)] = $file;
  }
ksort($a);
$rev = array_reverse($a);
$len = count($rev);

echo '
<table>
		<tr>
			<td height="16" ><b>Имя демки</b></td>
			<td width="24%" height="16" align="center"><b>Дата</b></td>
		</tr>
';

$arr = glob("*.dem");
for ($i = 0; $i < $len; $i++ ) {
echo '<tr><td><a href="'.$rev[$i].'">'.$rev[$i].'</a></td><td>'.date('H:i:s d-m-Y',filemtime($rev[$i])).'</td></tr>';
}
echo '</table>';
?>
 

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Re: Добавить в SourceBans

PHP:
$dir = opendir (".");
Замени на
PHP:
$dir = opendir ("./demos");
 
Сверху Снизу