Помогите пожалуйста, нашёл код для своей нужды, он не работает ни на какой из версий php Пытался решить проблему сам но безуспешно Код: PHP: <?php // Данные $ftphost = 'Айпи'; // Адрес FTP сервера $ftpport = 'Порт'; // Порт FTP серверар $ftpuser = 'Имя'; // Пользователь FTP $ftppasswd = 'Пароль'; // Его пароль // Папка, которую нужно выводить $folder = '/212.22.93.37_50230/Servers/SRVGame/Rocket/Logs'; // Первые буквы файлов, которые можно выводить $prepend = array( 'Rocket', 'R', ); // Запрещенные файлы (файлы, в которых имеются такие буквы) $denyed = array( 'vipasdads', 'txtasdad', ); // Отключим ошибки =) ini_set('display_errors', 1); error_reporting(E_ALL); /** * Системный класс приложения * @package Скрипт вывода файлов с FTP * @author Урих Александр <urichalex@mail.ru> * @link http://craft-soft.ru Команда разработчиков CraftSoft */ class System { private $ftphost; private $ftpport; private $ftpuser; private $ftppasswd; private $logfolder; private $res; /** * Параметры для подключения к FTP * @param string $ftphost Адрес FTP * @param string $ftpuser Логин пользователя FTP * @param string $ftppasswd Пароль * @param string $ftpport Порт * @param string $logfolder Папка, из которой брать файлы */ public function __construct($ftphost, $ftpuser, $ftppasswd, $ftpport, $logfolder) { $this->ftphost = $ftphost; $this->ftpuser = $ftpuser; $this->ftppasswd = $ftppasswd; $this->ftpport = $ftpport; $this->logfolder = $logfolder; $this->res = ftp_connect($this->ftphost, $this->ftpport); $login = ftp_login($this->res, $this->ftpuser, $this->ftppasswd); if(!$this->res || !$login) { $this->res = FALSE; } ftp_chdir($this->res, $this->logfolder); } public function __destruct() { ftp_close($this->res); } /** * Получение списка файлов * @param string $allowed Разрешенные префиксы * @return array Список файлов массивом */ public function getFiles($prepend, $denyed) { // Получим список файлов с FTP $files = $this->listFiles(); // Если файлы есть, возвращаем их if($files !== FALSE) { $return = array(); foreach($files as $file) { $file = basename($file); if($this->check($file, $prepend, TRUE) || $this->check($file, $denyed)) continue; $return[] = $file; } } return $return; } /** * Получение файла на скачивание * @param string $file Им файла */ public function getFile($file) { $content = file_get_contents( 'ftp://'.$this->ftpuser.':'.$this->ftppasswd.'@'.$this->ftphost.'/'.$this->logfolder.'/'.$file ); if(!$content) return FALSE; $this->sendFile($file, $content, 'application/download'); } private function check($string, $pattern, $prepend = FALSE) { if(empty($pattern)) return FALSE; if($prepend) { foreach($pattern as $p) { $pr = substr($string, 0, strlen($p)); if($pr === $p) return FALSE; } return TRUE; } else { foreach($pattern as $p) { if(strpos($string, $p) !== FALSE) return TRUE; } } return FALSE; } /** * Получение списка файлов с FTP * @return array Массив с фафлами */ private function listFiles() { return ftp_nlist($this->res, '.'); } /** * Отдает файл по содержимому * @param type $fileName Имя файла * @param type $content Содержимое файла * @param type $mimeType MINE тип файла */ private function sendFile($fileName,$content,$mimeType='text/plain') { $fileSize=(function_exists('mb_strlen') ? mb_strlen($content,'8bit') : strlen($content)); $contentStart=0; $contentEnd=$fileSize-1; $length=$contentEnd-$contentStart+1; header('HTTP/1.1 200 OK'); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Type: $mimeType"); header('Content-Length: '.$length); header("Content-Disposition: attachment; filename=\"$fileName\""); header('Content-Transfer-Encoding: binary'); $content=function_exists('mb_substr') ? mb_substr($content,$contentStart,$length) : substr($content,$contentStart,$length); echo $content; exit(); } } $data = new System($ftphost, $ftpuser, $ftppasswd, $ftpport, $folder); if(isset($_GET['file'])) $data->getFile($_GET['file']); ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8" /> <title>Скачать файлы</title> <style type="text/css"> table { width: 100% } td { padding: 7px; border: 1px solid #c1c1c1 } .container { width: 500px; margin: 20px auto 0 auto; } </style> </head> <body> <div class="container"> <h3>Скачать файлы</h3> <table> <?php foreach($data->getFiles($prepend, $denyed) as $file):?> <tr> <td> <a href="?file=<?php echo $file?>"><?php echo $file?></a> </td> </tr> <?php endforeach;?> </table> </div> </body> </html> Вот вся страница с кодом php Ошибка: Notice: Undefined variable: return in /hlds/web/sites/7db/fc1/s334/root/htdocs/membrii/logs/index.php on line 94 Warning: Invalid argument supplied for foreach() in /hlds/web/sites/7db/fc1/s334/root/htdocs/membrii/logs/index.php on line 206 Ссылка - http://logs.fanyplay.ru/membrii/logs/ Очень прошу, помгоите!
Реально - такая папка есть на сервере? и у вас не ошибки а предупреждения в первом случае - не объявленная переменная - так как список похоже пуст, во втором - попытка перебрать массив - который пуст из-за первого случая а по ссылке совсем другие предупреждения, в том числе - что пользователь не смог залогинится....
Судя по коду, эта ошибка означает, что вызов на строке 81 вернул false. Надо в $return бы на такой случай записывать пустой массив.
Папка есть и файлы тоже --- Добавлено --- Я отключил скрипт из-за того что он долго грузил сайт, а отключил таким способом) --- Добавлено --- Я пока только изучаю web часть, и до php не дошёл пока. Так что половину большую не понимаю. Сайт нужен для себя и модераторов.