Я пытаюсь динамически установить фон тела html. Обычно, если файл существует, используйте его, в противном случае используйте значение по умолчанию. Но он продолжает использовать значение по умолчанию независимо от того, существует файл или нет.
<style>
body
{
padding-top: 50px;
background-image: url("<?php
clearstatcache();
if (file_exists("/profile_img/".$profileData["ID"]."_bg.jpg"))
{
echo "/profile_img/".$profileData["ID"]."_bg.jpg?". rand(5, 15);
}
else
{
//echo "/profile_img/".$profileData["ID"]."_bg.jpg?". rand(5, 15);
echo "/profile_img/default.jpg?". rand(5, 15);
}
?>");
background-size: cover;
background-position: 50% 50%;
}
</style>
Я пробовал использовать файл (закомментированная строка), и он работает. Я не понимаю, почему это не работает
Сорта. Браузер рассматривает /profile_img как абсолютный по отношению к имени хоста (то есть в основном к корневому веб-каталогу), в то время как сервер рассматривает его как абсолютный по отношению к корневому каталогу системы. Итак, file_exists("./profile_img/") - это, вероятно, то, что вам нужно для проверки наличия файла в корневом веб-каталоге.






Некоторые вопросы:
/ будет абсолютным, заставляя его искать в корневом каталоге.<?php
$background = isset($profileData["ID"]) && file_exists('./profile_img/'.$profileData["ID"].'_bg.jpg')
? $profileData["ID"].'_bg.jpg' : 'default.jpg';
?>
<style>
body {
padding-top: 50px;
background-image: url("/profile_img/<?= $background.'?_='.microtime(true) ?>");
background-size: cover;
background-position: 50% 50%;
}
</style>
Если все еще не работает:
Хорошее использование микровремени.
Браузер будет рассматривать
/profile_img/...как относительный путь, в то время как серверный PHP рассматривает его как абсолютный.