Comment inclure un fichier en dehors de la racine du document?

Ce que je veux faire est d'inclure "file1.php" à partir de "domaine1" en "file2.php' sur 'domain2'. Donc, ce que j'ai pensé que je devrais faire quelque chose comme ceci:

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

Mais cela ne fonctionne pas pour des raisons que je ne peux pas vraiment comprendre. Donc, ce que j'ai fait a été d'ajouter mon chemin de la chemin de. Quelque chose comme:

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

Alors pouvez-vous me donner quelques conseils comme de l'endroit où je fais mal ?

Grâce

Mise à JOUR - de toute façon, j'obtiens le message d'erreur suivant:

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

Aussi j'ai essayé cette fois avec le safe_mode et Off.

UPDATE2: Aussi j'ai changé les permissions à 777 sur mon fichier de test et j'ai vérifié les chemins dans le fichier include dans bash.

SOLUTION: j'ai réussi à résoudre le mystère! Mon hébergeur utilise parallels Plesk panel pour gérer les domaines et à de telles. Aussi le niveau de rapport d'erreur en php.ini n'était pas E_ALL. Lorsque j'ai mis les rapports d'erreur à E_ALL j'ai reçu un avertissement en disant:

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

Alors je suis allé dans /var/www/vhosts/domain2/conf/httpd.inclure et à l'édition d'open_basedir chemin. Notez que ce n'est pas une solution durable depuis ce fichier de configuration est réécrit par parallels plesk panel à chaque fois que le domaine de la config est changé. Ce que vous devez faire est de modifier (ou créer) le " serveur virtuel.conf' du fichier dans le même répertoire et de lancer:

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

Cela devrait reconfigurer les paramètres de votre domaine, mais pour une raison étrange, il ne fonctionnera pas avec open_basedir. Je peux modifier d'autres choses comme document_root mais cela ne va pas changer open_basedir, mais c'est un autre problème 😀

SOLUTION FINALE: Pour ceux qui ont le même problème voici le code final qui ont travaillé. Je viens d'ajouter ceci dans le fichier /var/www/vhosts/domain2/conf/vhost.conf (vous pouvez modifier '/var/www/vhosts' ' /' ou ce que vous voulez):

    <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>

Merci à tous les gars!

"ne fonctionne pas" ne nous aide pas à identifier le problème. Ce qui arrive? Quelles erreurs sont signalées (y compris dans les logs du serveur)?
Re votre mise à jour, cela sonne comme le fichier n'existe pas, ou les droits ne sont pas correctement définis. Êtes-vous à 1000% qu'elle existe? Qui n'appartient pas à l'utilisateur (utilisateur/groupe)? L'utilisateur qui fait de l'exécution de PHP?
Comment puis-je vérifier d'utilisateur que PHP utilise ?
de3.php.net/manual/en/function.posix-getuid.php et de3.php.net/manual/en/function.posix-getgid.php
Merci pour l'affichage de la solution. Donc, beaucoup de fois les gens le comprendre, et puis il suffit de la laisser avec pas de résolution. Le mal open_basedir t-il de nouveau. J'aurais du me douter que c'était le cas, nous nous occupons de tout le temps chez Yahoo. J'ai juste pensé que Yahoo était plus paranoïaque que d'autres. Je ne savais pas open_basedir a été utilisé beaucoup dans la nature. Hmmm. J'apprends quelque chose de nouveau chaque jour! haha.

OriginalL'auteur Brayn | 2010-03-03