2017-04-05 6 views
0

J'Accession à la sous-dossier de mon site et a obtenu cette erreur:

PHP Warning: include_once(): Failed opening '/var/www/html//include/version.inc' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /srv/sparrow/php/include/branches.inc on line 3 

Il semble que $ _SERVER [ 'DOCUMENT_ROOT'] retour d'un mauvais répertoire comme celui-ci:

/var/www/html/ 

Si j'accéder www.my.website/php, cela devrait être le répertoire prévu que le $ _SERVER [ 'DOCUMENT_ROOT'] devrait retourner:

/var/www/html/php/ 

Ce sont mes configurations virtualhost:

NameVirtualHost *:80 

<VirtualHost *:80> 
    ServerName www.mywebsite.com 
    DocumentRoot /var/www/html/ 

    <Directory /var/www/html/> 
    Options -Indexes -MultiViews 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName www.mywebsite.com/ph 
    # Webroot of PHP site 
    DocumentRoot /var/www/html/php/ 

    <Directory /var/www/html/php/> 
    Options -Indexes -MultiViews 
    </Directory> 
</VirtualHost> 

Comment puis-je configurer mes configurations virtualhost telles que si j'accéder à www.my.website/php il doit retourner le DocumentRoot avec la valeur/var/www/html/php /?

Merci les gars!

+0

La racine du document a la valeur __fixed__. Tout chemin sur votre site, vous devez ajouter à la racine du document __manually__ –

+0

Merci @u_mulder. :) – Michael

Répondre

1

Vous avez deux vhosts sur le port 80 présent. Les premières victoires. Vous devez les distinguer par IP, nom de serveur ou port. Si les deux fonctionnent sur le même port, vous aurez également besoin de NameVirtualHost 80 si vous utilisez Apache 2.2 (pas nécessaire pour 2.4).

Je suis assez sûr, si vous échangez les vhosts, vous obtiendrez /var/www/html/php/ pour $_SERVER['DOCUMENT_ROOT']

Mais encore: Si vous avez deux vhosts, faites-les distinguer!


Mise à jour

rewrite supplémentaires (nécessite mod_rewrite être activé) dans vhost supérieure, de sorte que vous pouvez laisser tomber le deuxième vhost:

RewriteEngine On 
RewriteRule ^/ph/(.*)$ http://www.mywebsite.com/ph/$1 [R=301,L] 

ou [P,L] si vous voulez cacher que vous réécrivez, mais [P] nécessite également mod_proxy pour être activé.

+0

Bonjour @Hello Fishy, ​​merci d'avoir répondu à ma question. J'ai ajouté le nom de serveur pour chaque vhosts pour les distinguer et cela ne fonctionne pas. J'ai suivi cette documentation de NameVirtualHost. https://httpd.apache.org/docs/2.2/vhosts/name-based.html – Michael

+0

'www.mywebsite.com/ph 'n'est pas un nom de serveur :('/ ph' est l'URI et' www.mywebsite. com' est un nom de serveur ... donc les deux vhosts écoutent toujours le même port et le même nom -> ne peut pas fonctionner ... soit on devrait avoir un autre port ou un autre nom.Btw, avez-vous vraiment besoin de deux vhosts de toute façon? –

+0

Si je visite www.mywebsitemcom/ph, il faut utiliser le second vhost, sinon des erreurs se produiront parce que documentroot n'est pas correct Merci Hello Fishy pour votre aide – Michael