#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. Рик, все готово. Отключил плагины и обнаружил проблему. Спасибо за вашу помощь. Решено!