Allow_url_include açık ise include edebilirsiniz,
ama...
Karşı sunucuda eğer PHP dosyası sunucu tarafında yorumlanıyorsa (ki bu WordPress vb. scriptlerin çalıştığı Apache, Nginx hostinglerde yorumlanır)
<?php ?> şeklindeki PHP kod kısmına erişemezsiniz.
Ne demek istiyorum?
http://www.example.com/dosya.php konumunda dosyamız olsun. Bu dosya içeriği şöyle olsun:
<?php $str = 'String İçeriği Buraya'; print 'Hello World'; ?>
Daha sonra farklı bir sunucuda bunu include ile çekelim:
<?php
include 'http://www.example.com/dosya.php';
print($str);
?>
Burada ekrana
Hello World yazıp hata verecektir (Undefined variable: str in...), çünkü
dosya.php'de tanımladığımız
$str değişkeni sunucu tarafında yorumlandı, ve kod çalışırken kullanıldı. Ama çıktıda bize dönmediği için include çektiğimizde çalışmadı.
Çözümler:
1.)
http://www.example.com/dosya.php yerine
http://www.example.com/dosya.txt şeklinde yorumlanmayacak bir formatta tutmak. (veya sunucu tarafı konfigrasyon ile php'nin yorumlanması kapatılabilir)
2.) http yerine ftp protokolünü kullanarak dosya.php'ye erişmek. (
ftp://1.1.1.1:21/dizin/dosya.php tarzı)
3.) (Mantıklı Çözüm) Include kullanmak yerine uzak sunucuda bir rest api oluşturup curl ile ona istek gönderip veriyi JSON formatında almak.
Neden 3. Çözümü Kullanmalıyım?
1 ve 2. çözümde veriler herkese açık / erişilebilir durumda oluyor.