Скрипт случайного изображения WordPress PHP

#php #wordpress

Вопрос:

Я показывал, используя приведенный ниже код в течение нескольких лет, чтобы отображать случайное изображение в WordPress без каких-либо проблем. Код сломался сегодня, когда я обновился до PHP 7.4. Я застрял на том, как заставить код снова работать или заменить его новым кодом, чтобы изображения из каталога отображались случайным образом.

*Обновление: неработающий код означает, что изображения больше не отображаются. На наших выводах нет сообщений об ошибках, просто пустой раздел, где обычно отображается случайное изображение.

 <?php
$folder = '';
$exts = 'jpg jpeg png gif';
$files = array(); $i = -1;
if ('' == $folder) $folder = './';
$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) {
if (preg_match('/.'.$ext.'$/i', $file, $test)) {
$files[] = $file;
  $i;
}
}
}
closedir($handle);
mt_srand((double)microtime()*1000000);
$rand = mt_rand(0, $i);
header('Location: '.$folder.$files[$rand]); // Voila!
?> 

Файл называется rotate.php и он расположен в каталоге изображений. Я называю rotate.php скрипт из таблицы стилей css веб-сайта с использованием следующего кода:

 background: #ffffff url(images/rotate.php) no-repeat center top; 

Спасибо за вашу помощь.

Комментарии:

1. «Код взломан сегодня» — каким образом? Вы получаете какие-либо ошибки?

2. Изображения у вас больше не отображаются. На наших выводах нет сообщений об ошибках, просто пустой раздел, где обычно отображается случайное изображение.

3. Хорошо, так какую же отладку вы провели? $files Заполнен ожидаемыми файлами? Находится $rand в пределах границ $files массива? $folder похоже, это относительный путь, var_dump(realpath($folder)); указывает ли он на правильное местоположение? Если вы установите error_reporting и display_errors покажете все, увидите ли вы какие-либо предупреждения или уведомления?

4. Привет, Рик, после отката на PHP 5.4 проблема все еще сохранялась. Похоже, это проблема с последней версией WordPress. Я не уверен, но, может быть, в последней версии WordPress или предыдущей версии были введены дополнительные меры безопасности, которые могут ограничивать выполнение php-скрипта?

5. Рик, все готово. Отключил плагины и обнаружил проблему. Спасибо за вашу помощь. Решено!