Belge kök dışında dosyası eklemek nasıl?

5 Cevap php

Ben yapmak 'Domain2' on 'file2.php' içine 'domain1' dan dosya1.php 'eklemektir ne ister. Yani ne yapmam gerektiğini düşündüm böyle bir şey olur:

file2.php
require_once '/var/www/vhosts/domain1/httpdocs/file1.php';

Ama bu gerçekten kavramak edemez nedenlerle çalışmaz. Peki ne yaptım dahil yoluna yolumu eklemek oldu. Gibi bir şey:

file2.php
set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/vhosts/domain1/httpdocs");
require_once 'file1.php';

Yani bana ben yanlış yapıyorum nerede bazı ipuçları verebilir misiniz?

Teşekkürler

GÜNCELLEME - Ben aşağıdaki hata iletisini alabilirsiniz iki yolu:

Fatal error: require() [function.require]: Failed opening required '/var/www/vhosts/domain1/httpdocs/file1.php' (include_path='.:/php/includes:/usr/share/pear/') in /var/www/vhosts/domain2/httpdocs/file2.php on line 4

Ayrıca ben hem Safe_mode Açık ve Kapalı ile denedim.

Update2: Ayrıca ben benim test dosyası üzerinde 777 izinleri değiştirdim ve Bash dahil dosyaya yolları çift kontrol ettik.

ÇÖZÜM: Ben gizemi çözmek için başardınız! Benim hosting şirketi etki ve böyle yönetmek için Plesk kullanır. Ayrıca php.ini içindeki hata raporlama seviyesi E_ALL değildi. Ben E_ALL için hata raporlama ayarlandığında ben bir uyarı söyleyerek var:

Warning: require() [function.require]: open_basedir restriction in effect.

Yani / var/www/vhosts/domain2/conf/httpd.include gitti ve open_basedir yolunu düzenlenebilir. Bu config dosyası alanı yapılandırma değişti her zaman Plesk tarafından yeniden yazılarak beri bu kalıcı bir çözüm olmadığını unutmayın. Yapmanız gereken düzenleme olduğunu (veya oluşturun) aynı dizinde 'Vhost.conf' dosyası ve sonra çalıştırın:

 /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=DOMAIN.TLD

Bu etki için ayarları yeniden yapılandırmak gerekir, ancak bazı garip nedenle bu open_basedir'dan ile çalışmaz. D: Ben document_root gibi diğer şeyleri değiştirebilirsiniz ama open_basedir'inizi değişmeyecek, ama bu başka bir sorun var

KESİN ÇÖZÜM: burada aynı sorunu olanlar için çalıştı son kodudur. : Ben sadece (değiştirebilirsiniz '/ var / www / vhosts' için '/' veya istediğiniz herhangi bir şey) in / var/www/vhosts/domain2/conf/vhost.conf bu eklendi

    <Directory /var/www/vhosts/DOMAIN.TLD/httpdocs>
    <IfModule mod_php5.c>
            php_admin_flag engine on
            php_admin_flag safe_mode off
            php_admin_value open_basedir "/var/www/vhosts"
    </IfModule>
            Options -Includes -ExecCGI
    </Directory>

Size tüm çocuklar ederiz!

5 Cevap

open_basedir ev dizininin transversing PHP'nin engeller etkisi ise bu başaramayız.

Ne yapabilirim docroot1 ve docroot2, aynı gruptaki kullanıcılar tarafından sahip olunan göre grup izinlerini ayarlamak ve diğer web kök okumak docroot1 için docroot2 bir sembolik linki kullanınız emin olun.

Ya da, yeniden inşa PHP ve sadece her süreç gibi tipik * nix izinlerini takip edelim :)

Bu i yönetmek makineleri bir çift üzerinde çalışıyor

ini_set("include_path",".:/hsphere/local/home/user_name/other_domain.com");
require "filename.php";

what you are using is bad practice. put the dependent code into domain specific. Duplicating the same code is the right approach as it does not affect the operation of both sites.

dosya1.php bir sembolik bağ oluşturmayı deneyin ve sanki yerel dizinden olduğunu dahil.

Ayrıca. htaccess true ayarlanmış followsymlink seçeneği vardır emin olun

nasıl Domain2 sizin file2.php bu çalışıyor dersiniz?

require_once '../../../domain1/httpdocs/file1.php';

Eğer farklı bir dosya gerektirir çalışırsanız ne olur:

// test.php
<?php
   echo 'Hello World';
?>

// your file
require_once('test.php');

Bu çalışır mı? Eğer öyleyse, başka bir konumda dnm.php koymak ve tekrar deneyin. Hala çalışıyor mu?