Метод PHP file_exists не работает должным образом

Я пытаюсь динамически установить фон тела 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/... как относительный путь, в то время как серверный PHP рассматривает его как абсолютный.

Daniel Abercrombie 14.07.2018 05:34

Сорта. Браузер рассматривает /profile_img как абсолютный по отношению к имени хоста (то есть в основном к корневому веб-каталогу), в то время как сервер рассматривает его как абсолютный по отношению к корневому каталогу системы. Итак, file_exists("./profile_img/") - это, вероятно, то, что вам нужно для проверки наличия файла в корневом веб-каталоге.

Anthony 14.07.2018 05:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Некоторые вопросы:

  • Использование / будет абсолютным, заставляя его искать в корневом каталоге.
  • Всегда проверяйте, установлены ли вары перед использованием.
  • Все, что меняется, - это имя файла, поэтому вы можете использовать троичный код, который значительно сократит этот код.
<?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>

Если все еще не работает:

  • Убедитесь, что файл действительно существует.

Хорошее использование микровремени.

Anthony 14.07.2018 05:55

Другие вопросы по теме