Mutlak URL'lerin Haritalama Mutlak / Bağıl (Yerel) Yollar

1 Cevap php

Ben mutlak veya göreceli local yol haritasına hızlı ve güvenilir bir şekilde ihtiyaç (örneğin ./images/Mafalda.jpg), mutlak bir URL karşılık, şimdiye kadar bu ile gelip başardınız oluyor için:

function Path($path)
{
    if (file_exists($path) === true)
    {
        return rtrim(str_replace('\\', '/', realpath($path)), '/') . (is_dir($path) ? '/' : '');
    }

    return false;
}

function URL($path)
{
    $path = Path($path);

    if ($path !== false)
    {
        return str_replace($_SERVER['DOCUMENT_ROOT'], getservbyport($_SERVER['SERVER_PORT'], 'tcp') . '://' . $_SERVER['HTTP_HOST'], $path);
    }

    return false;
}

URL('./images/Mafalda.jpg'); // http://domain.com/images/Mafalda.jpg

Beklendiği gibi çalışıyor gibi görünüyor, ama bu benim uygulaması için kritik bir özelliktir beri her başı bu fonksiyonu kullanmak için birkaç kez gidiyorum çünkü ben kimse ben kaçırmış olabilir ve optimizasyonlar da açığız herhangi bir sorun nokta eğer sormak istiyorum isteği. Herkes?

1 Cevap

Için dışarı bakmak için bir potansiyel sorun sembolik bağlantıları olduğunu. DOCUMENT_ROOT bir sembolik bir kısmını içeriyorsa, şeyler (realpath beri () sembolik bağın genişleyecektir) havaya uçurmak olacaktır.

Tabii ki, çözüm de) realpath içinde sarma $ _SERVER ['DOCUMENT_ROOT'] (kadar basit olabilir.