Düzgün PHP göreli yerel yolları gezinme

4 Cevap php

Ben özellikle getimagesize fonksiyonu ile sorun yaşıyorum. Ben etki alanının HTTP köküne /item/ajax/image.php akrabası işlev çağrısı yapıyorum. I /portfolio/15/image.jpg depolanmış bir görüntünün boyutlarını almak için çalışıyorum. Anladığım kadarıyla, the function argüman olarak bir dosya ismi alır, bu yüzden aşağıdaki çalıştı:

getimagesize('/portfolio/15/image.jpg')

Ve

getimagesize('../../portfolio/15/image.jpg')

Fakat her ikisi de sadece PHP hataları attı.

4 Cevap

yol aşağıda prefixing deneyin:

 $_SERVER['DOCUMENT_ROOT']

Göreceli yollar her zaman en olası index.php olan yürütülür dosyadan başlar. Bu aynı zamanda dahil dosyalar için de geçerlidir. Bu any göreli yolları sizin index.php başlayacak proje kapsamında dosya anlamına gelir. (A hariç chdir() önce yapılır)

Ben "../../file.ext" ya da benzeri gibi yollar var gerçekten kötü kod olduğunu düşünüyorum. Uygulamanıza full yolunu (örneğin: $_SERVER['DOCUMENT_ROOT']) sahip bir sabit tanımlamak ve kullanmakta olduğunuz herhangi bir yol için prepend.

Örnek:

# somewhere in your index.php
define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);

# in any included file
$my_path = ROOT_PATH."/portfolio/14/image.jpg"

Bu yolları tanımlamak için imho temiz ve en okunabilir yoludur.

Girdiğiniz dosya http kök ile ilgili değil ama web sunucusu dosya sisteminde mevcut bir yolu olmalıdır.

Eğer girebilirsiniz yanlış giden ne görmek için:

realpath('../../portfolio/15/image.jpg')

Size sonuna kadar hangi dizin görmek için.

Veya kullanın:

imagesize(dirname(__FILE__) . '/../../portfolio/15/image.jpg')

tam dizin yeterlilik almak için.

Bir alternatif olarak, web adresini kullanabilirsiniz, ancak tam url belirtmelidir:

getimagesize('http://yoursite.com/portfolio/15/image.jpg')

Ancak, bu daha düşük bir seçenektir.

PHP "/" Apache "/" (web root) olarak aynı değildir. PHP "/" sistem kök anlamına gelir. Sen (script ve 'portföy' klasörü aynı yerde ise 'portfolio/15/image.jpg') PHP komut yere göreceli yolları kullanmak gerekir