Как мне прочитать и проверить, есть ли изображения на моем PHP-сервере, но по HTTPS? - PullRequest
0 голосов
/ 09 января 2019

Я хочу проверить свои изображения на моем сервере, и у меня есть другой поддомен для сохранения изображений, но они обслуживаются по HTTPS

Он работает только локально, но не удаленно по HTTPS, так как всегда печатает «существует каталог».

$foto = "https://subdomain.example.com/images/" . $var . "/" . $var2. "/flayer";

if (file_exists($foto . ".jpg")) {
    echo "HELLO WORL";
}

if (glob($foto . ".*")) {
    if (file_exists($foto . ".jpg")) {
        $ruta = "https://subdomain.example.com/images/". $var . "/" . $var2 . "/flayer.jpg";
    }else{ 
        echo "no exists";
    }
}else{
    echo "no exists on directory";
}

Ответы [ 2 ]

0 голосов
/ 09 января 2019

я тестирую с 2 вариантами

   function remote_file_exists($url, $ext) {
    $ch = curl_init($url . $ext);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($httpCode == 200) {
        return true;
    }
}

И

    function remote($url, $ext) {
    if (@exif_imagetype($url . $ext)) {
        return true;
    } else {
        return false;
    }
}

Работает, но так медленно, что-нибудь, чтобы сделать это быстрее?

0 голосов
/ 09 января 2019

glob() - служба каталогов. Если это подкаталог вашего домена, то ваша файловая система должна храниться на том же сервере. Внутри вашей индексной папки определите или сохраните переменную по этому пути - рассматривайте ее как переменную среды.

define('PUBLIC_ROOT', dirname(__FILE__));

Теперь вы можете перебирать ваш каталог в вашем поддомене. Это будет папка с именем, как называется ваш поддомен.

foreach(glob(PUBLIC_ROOT . '/subdomain/images/*.jpg', GLOB_BRACE) as $image)
    // Do something with each JPEG image

Если по какой-то причине ваш поддомен размещен где-то еще, что странно, или это внешний сайт, и вам необходимо для использования HTTP. Отправьте запрос cURL. Вы не можете указывать никого в шапке.

$ch = curl_init('https://sub.example.com/images/foo.jpg');

curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec  ($ch);

if(curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200)
    // It didn't exist

curl_close($ch);

Нельзя использовать междоменную службу каталогов (протоколы DS) (по протоколам HTTP).

Перемещение по точке: Если вам нужна коллекция всех изображений, хранящихся на этом сервере, подумайте о создании API, который возвращает JSON-кодированный массив всех путей к файлам или динамические URI на вашем субдомен, затем запросите его у другого домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...