php ile başka bir sunucudan php dosyası da dahil olmak

5 Cevap php

Ben farklı sunucularda bulunan iki PHP dosyalarını, http://www.mysite.com/main.php az birini, http://www.sample.com/includeThis.php de diğer var.

Ben ilk birinden ikinci dosyayı eklemek istiyorum.

İkinci dosyanın içeriği aşağıdaki gibidir:

<?php
$foo = "this is data from file one";

Ve ilk dosya:

<?php
include "http://www.sample.com/includeThis.php";
echo $foo;

Bunu herhangi bir yolu var mı?

5 Cevap

Hayır, bu ayar devre dışı / en web sunucuları (php.ini) varsayılan olarak izin verilmez böylece include için uzaktan adrese posta dosyaları dahil etmek için security reasons kullanamazsınız.

Hala inclusion uzak dosyaları, yönerge allow_url_include must be set to On php.ini de izin vermek istiyorsanız,

Fakat yine de bu görüş bir güvenlik odaklı noktasında, kötü bir uygulamadır; ve, bu nedenle, genellikle (aslında, bunu etkin görmedim) devre dışı bırakılır

If you want to read the contents of a remote file though, yerine file_get_contents işlevini kullanabilirsiniz BUT bu saf HTML biçimlendirme kodu olarak iade edilecektir, olmayacak Herhangi bir server-side kodu.

Yorumlarınızı okuduktan sonra - benim cevap empatik olduğunu, forget it - hangi sen kopya koruma aracı olarak bunu yapmak istiyorum devlet. Bu nasıl kopya koruma işleri değildir.

Kullanarak yapabileceğiniz tek şey include() olup fetch source code from elsewhere to be interpreted on the local interpreter. Bu çatlak çocukça kolaydır: Kötü niyetli bir müşteri sadece echo() getirilen koduna zorunda olacaktır.

(Sunucu üzerinde), size yardımcı olmayacaktır uzaktan uzaktan scriptinizi çünkü script devlet (değişkenler, fonksiyonlar ...) won't be present in the script you call it from.

Sahip seçenekleri şunlardır:

  • Derleme / kodlama / muhtemelen (SO bu konuda birçok soru) çalıştırmak için belirli bir PHP modülü gerektiren senaryoyu obfuscating

  • (Örneğin, SOAP kullanarak) gerçek bir web servisi oluşturma sunucu üzerinde çalışır ve istenen işlemleri gerçekleştirir

Bu değer ne için, ama, ben şahsen satın alma yok, ne, çalışmak için "telefon ev" gerekiyor kodlanmış komut ve komut satın almak için müşterilerine tavsiye. Ben (çalmak yakalanma riskleri çok pahalı çünkü, ürününüzü satın içine kurumsal müşterilere korkutmak olacaktır.) Sıkı bir lisans sözleşmesi aracılığıyla ürünlerini korumak inanıyorum

Eğer önerilen gibi etki alanları arasında gitmek için çalışıyoruz, aslında yapmak için hazır oturdu bir dosyada dahil değil - süreç farklıdır. Makine ne deyim içeren tüm ilgili değil http üzerinden dosyayı geri getirmek gerekiyor.

Eğer hosting üzerinde iseniz Ayrıca, PHP genellikle dışında kendi etki gidiyor engellemek için yapılandırılmıştır.

Bu kısıtlama altında değilse, bir çözüm diğer sunucudan dosyasının bir kopyasını geri kopyalamak için PHP kullanmak, ve o zaman etki oturdu bir kez dahil etmek olabilir. Başka apporach her yerde bu değişiklik yaptığınızda gereken kopyalar küçük bir "dağıtım" senaryo yazmak için olabilir ...

Bu yardımcı olur umarım ...

Kırlangıç

, Dosyayı açmak böylece gibi ikinci dosyaya eklemek için, file_get_contents kullanın:

$secondFile = file_get_contents('http://www.sample.com/includeThis.php');
file_put_contents('your_file', $secondFile, FILE_APPEND);

Eğer dosyanın sonuna koymak istiyorsanız bu çalışacaktır. Sadece bir dosyada dahil edebilirim daha.

Dediğim gibi Neyse, bu bunun içinde vardır içeriği hakkında emin değil, özellikle eğer, IMO riskli ve tehlikelidir.

Ayrıca, your_file gerçek bir sunucu yolu değil, bir URL olması gerekir.

OP hiç kendisi için bir çözüm bulundu merak ediyorum. Bildiğim kadarıyla, bu iş için tek yol eklemek istediğiniz komut olarak aynı sunucuda tüm müşteri hesapları için olurdu - Ben benzer bir şey yaptık:

/path_to_myserver_root/httpdocs/clients/client01/wwwroot/scriptA.php /path_to_myserver_root/httpdocs/clients/client02/wwwroot/scriptA.php ETC....

THEN: /path_to_myserver_root/privatefiles/myapp/scriptB.php

wwwroot burada her istemci etki puan.

scriptA.php yukarıda tam yolu ile bu fonksiyonları için scriptB.php içerir sonra bazı iş mantığı vardır:

gerektiren ('/ path_to_myserver_root / privatefiles / Uygulamam / scriptB.php')

scriptB.php http tarafından erişilemez, sunucu üzerinde bir özel korumalı dir bulunan ve müşteriler tarafından çaprazlanabiliyorsa değil.

Şimdi aklınızda, bu iş için benim nedenlerim benim müşteri bazı özel büyülü php kod alıkoyma, birden fazla hesapta sürümü tutarlılığı korumak için - Ama ben bu amaç için uygulanan olabilir varsayalım.

YMMV, Meh.