У меня есть веб-сервер VPS с установленным PHP и несколько папок со звуковыми записями из школы. Я хотел бы создать RSS-канал для каждой папки, перечисляя файлы .mp3 в алфавитном порядке (так как они содержат префикс номера, например, 001-filename). Есть ли способ сделать это, что в настоящее время работает? Я нашел эти 2 сценария в сети, но ни один из них, похоже, не работает для меня.
N ° 2 кажется самым простым сценарием, но если я отредактирую переменные и загрузлю его в соответствующую папку, он, похоже, не будет работать. Вот результат, который я получаю, переходя на мою страницу:
?xml version = «1.0»?> 0) {$ files [] [‘name’] = $ file; $ files [] [‘timestamp’] = filectime ($ file); }} closedir ($ dir); // natcasesort ($ files); — мы будем использовать даты и время для сортировки списка. for ($ i = 0; $ i \ n «; echo» \ n «; echo» «. $ feedBaseURL. $ files [$ i] [‘name’].» \ n «; echo» «. $ feedBaseURL. $ files [$ i] [‘name’]. «\ n»; // echo «». date («DM j G: i: s TY», $ files [$ i] [‘timestamp’]). » \ n «; // echo» «. $ files [$ i] [‘timestamp’].» \ n «; echo» \ n «;}}}?>
Это моя php-версия
PHP 5.6.17-0 + deb8u1 (cli) (сборка: 13 января 2016 г., 09:10:12)
Мой конечный результат должен быть таким:
website.com/chemistry/ есть RSS-канал для всех аудио файлов химии
website.com/english/ имеет RSS-канал для всех английских аудиофайлов
Начните с оригинального скрипта github, сохраните его в файл (с расширением .php) и загрузите его на свой сервер, чтобы убедиться, что он работает как есть. Я получаю следующее (в Chrome) (я изменил имя веб-сайта на example.com, чтобы разместить его здесь):
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>My Audio Feed</title>
<link>http://www.example.com/audio</link>
<description>Feed for the my audio files in some server folder</description>
<atom:link href="http://gogglesoptional.com/bloopers" rel="self" type="application/rss+xml"/>
</channel>
</rss>
Если это работает, попробуйте заменить <?= '?'; ?>
с <?php echo '?'; ?>
, Скрипт из github включает php-код, смешанный с XML, и ваш вывод предполагает, что что-то (проблема с синтаксисом, отсутствует <?php
и т. д.) переключил его из php-режима в xml, когда это не было задумано.
Заменить каждое начало любого вхождения кода PHP из <?
в <?php
и тогда это сработает. Анализатор XML предполагает, что <?
тег отмечает начало объявления XML.
Резюме:
Вот что мне нужно было сделать, чтобы скрипт GitHub работал.
Для начала нужно иметь правильные расширения.
Строка 14: $allowed_ext = ".mp4,.MP4,.mp3,.MP3";
Убедитесь, что у вас есть .
или какой-то персонаж (может быть даже *
) в передней части первого расширения.
пример: $allowed_ext = ".mp3";
Что происходит, strpos()
который проверяет расширение файла проверяет, чтобы убедиться, что mp3
находится в списке и возвращает позицию. Без .
впереди он вернет 0, если это первое расширение и код был больше 0, >0
, так что он не даст никаких результатов, и вы пропустите все файлы, которые имеют это самое первое расширение в списке.
Во-вторых, я покончил с расширениями файлов с учетом регистра.
Линия 30: $ext = strtoupper($path_info['extension']);
Это автоматически делает расширение заглавным ".mp3, .MP3"
для списка расширений является избыточным и довольно хорошо игнорирует "mp3"
расширение, так как это нижний регистр.
Вот мой пересмотренный line 32
, Я заставил $allowed_ext
переменная в верхнем регистре в strpos
чтобы соответствовать силе сценариев $ext
переменная также в верхнем регистре.
if($file !== '.' && $file !== '..' && !is_dir($file) && strpos(strtoupper($allowed_ext), $ext)>0)