IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

revenir à la racine de l'hebergement (pas du site).


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 046
    Par défaut revenir à la racine de l'hebergement (pas du site).
    Bonjour,

    Voila mon problème : Un seul hébergement, plusieurs sites qui sont chacun dans un dossier de l'hébergement.

    On a donc www qui contient les dossiers site1, site2, site3, etc...
    chaque site est totalement indépendant (même s'il existe des hyperliens entre eux) et accessible avec son propre nom du genre www.site1.com etc...

    Une page dans chacun de ces site fait appel à des ressources communes situées dans un autre dossier (www/agenda).
    Pour accéder à ces ressources on utilise du PHP avec des lignes du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/');.
    ou
    $inputFileName = './dates.xlsx';
    et
    $closeFileName = './dates.xlsx';
    le problème c'est évidement les ./quelquechose
    ce que je voudrais pour être certain d'arriver au bon endroit c'est mettre une adresse qui repart de la racine.
    Je pourrais probablement mettre http://monhebergement/agenda ce qui donnerait quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set_include_path(get_include_path() . PATH_SEPARATOR . 'http://espaceimy.cluster010.ovh.net/agenda/Classes/');.
    ou
    $inputFileName = 'http://espaceimy.cluster010.ovh.net/agenda//dates.xlsx';
    et
    $closeFileName = 'http://espaceimy.cluster010.ovh.net/agenda//dates.xlsx';
    Mais est ce une bonne solution ?
    n'y a t'il pas une manière plus propre de rester en relatif tout en allant à la racine ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je n'avais pas lu ce post avant de répondre à l'autre...

    Si les fichiers à inclure sont dans le même www, alors pour indiquer le chemin relatif entre un fichier inclus et CELUI DANS LEQUEL il est inclus, on peut utiliser :
    • __DIR__
    • dirname(__DIR__)

    voir : Constantes magiques

    Tu peux aussi regarder ce que renvoie $_SERVER['DOCUMENT_ROOT'].

    voir : $_SERVER

  3. #3
    Membre éprouvé
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 046
    Par défaut
    Bon là je suis vraiment largué !

    __DIR__ Le dossier du fichier. Si utilisé dans une inclusion, le dossier du fichier inclus sera retourné. C'est l'équivalent de dirname(__FILE__). Ce nom de dossier ne contiendra pas de slash final, sauf si c'est le dossier racine
    Heu oui mais ça je m'en fou, j'ai pas besoin d'une commande qui me retourne quelque chose, j'ai besoin d'une commande qui me place à un endroit.
    Je ne veux pas savoir dans quel dossier est un fichier, je veux me mettre dans ce dossier.

    $_SERVER est un tableau contenant des informations comme les en-têtes, dossiers et chemins du script.
    La encore moi ça ne m'intéresse pas d'avoir un tableau avec des infos, je sais ou je veux aller, je veux aller dans www/agenda/Classes.
    J'ai un include qui le faisait bien avant quand le dossier classe était dans le répertoire du fichier qui l'appelait.
    Ca faisait alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/');
    include 'PHPExcel/IOFactory.php';
    Dans ce temps la il y avait un dossier AGENDA2 qui contenait le fichier index.php (qui contenait le code ci-dessus) et un dossier Classes.

    Mais maintenant le dossier Classes est dans un dossier plus loin dans l'arborescence.
    Le fichier agenda.php qui contient le code est à www/wp_jdw/theme/lush/agenda/index.php.
    Le dossier classes est dans www/agenda/Classes.

    J'ai l'impression de passer à coté d'un truc

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Yepazix Voir le message
    J'ai l'impression de passer à coté d'un truc
    Ca c'est clair.

    Quand on se fout de tout et qu'on ne teste rien...

    Et vu comment tu réponds (comme d'habitude), ça ne donne pas envie d'aller plus loin dans les explications.

  5. #5
    Membre éprouvé
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 046
    Par défaut
    Bon donc si je comprends bien tu veux dire que je dois uttiliser

    $_SERVER['DOCUMENT_ROOT'].
    pour définir là ou je veux allez
    et utiliser __DIR__ pour voir ou je suis ?

    C'est ça ?

    J'ai compris comment faire avec __DIR__
    J'ai fait simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [insert_php]
    var_dump(__DIR__);
    [/insert_php]
    (Je suis dans une page WP --> les [insert_php])


    Maintenant il faut que je vois comment fonctionne $_SERVER['DOCUMENT_ROOT'].

    Je te dirai quoi..


    Merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Le fichier agenda.php qui contient le code est à www/wp_jdw/theme/lush/agenda/agenda.php.
    Le dossier classes est dans www/agenda/Classes.
    A inclure : www/agenda/Classes/PHPExcel/IOFactory.php

    1/ Dans le fichier agenda.php (ci-dessus cité) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include( dirname(dirname(dirname(dirname(__DIR__)))).'/agenda/Classes/PHPExcel/IOFactory.php' );
    • __DIR__ est le dossier contenant le fichier agenda.php (donc dossier "agenda")
    • dirname(...) : on descend à chaque fois d'un dossier jusqu'à la racine www
    • ensuite, on remonte dans l'arborescence


    2/ 2ème solution (celle commentée par Celira) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include( $_SERVER['DOCUMENT_ROOT'].'/agenda/Classes/PHPExcel/IOFactory.php' );
    Cela dit, je t'avais dit de vérifier ce qu'indique $_SERVER['DOCUMENT_ROOT'] :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_SERVER['DOCUMENT_ROOT']; // si tu ne sais pas comment vérifier une données...
    Car en LOCAL, ça ne donne pas forcément le bon résultat (disons que comme je gère plusieurs sites, chacun dans son propre dossier et indépendants les uns des autres, ça descend trop loin !)
    Dernière modification par Celira ; 07/07/2015 à 12h18.

  7. #7
    Membre éprouvé
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 046
    Par défaut
    Là j'ai besoin d'un verre je crois !!!!!!!!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [insert_php]
    $artout="jdw";
    /** Charger la bibliothèque **/ 
    include( $_SERVER['DOCUMENT_ROOT'].'/agenda/Classes/PHPExcel/IOFactory.php' );
    $inputFileName = './dates.xlsx';
    $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
    /** On dit que c'est la feuille 0 du fichier excell qu'on va utiliser*/
    $worksheet=$objPHPExcel->getSheet(0);

    me donne :

    Warning: require(/home/espaceimy/www/agenda/Classes/PHPExcelhttp://espaceimy.cluster010.ovh.net/agenda/Classes/PHPExcel/Autoloader.php) [function.require]: failed to open stream: No such file or directory in /home/espaceimy/www/agenda/Classes/PHPExcel/IOFactory.php on line 35

    Fatal error: require() [function.require]: Failed opening required '/home/espaceimy/www/agenda/Classes/PHPExcelhttp://espaceimy.cluster010.ovh.net/agenda/Classes/PHPExcel/Autoloader.php' (include_path='.:/usr/local/php5.3/lib/php:/home/espaceimy/www/wp_jerome_de_warzee/wp-content/plugins/background-manager/vendor/OAuth/lib') in /home/espaceimy/www/agenda/Classes/PHPExcel/IOFactory.php on line 35

    Pourquoi il me parle de autolaoder.php ?
    Et d'où ca sort ça ? include_path='.:/usr/local/php5.3/lib/php:/home/espaceimy/www/wp_jerome_de_warzee/wp-content/plugins/background-manager/vendor/OAuth/lib'

    Le wp est en ligne chez mon hébergeur mais pas accessible pour les gens (sauf s'il tombent dessus par hasard bien sur).

    Attention donc que je suis aussi dans un environnement particulier, mon code PHP s'execute dans une page WP via les plug-in "Insert PHP" et "PHP Code Widget".
    Je commence à me demander si ce n'est pas le problème !

    Si je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [insert_php]
    $artout="jdw";
    /** Charger la bibliothèque **/ 
    include( dirname(dirname(dirname(dirname(__DIR__).'/agenda/Classes/PHPExcel/IOFactory.php' );
    $inputFileName = './dates.xlsx';
    $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
    /** On dit que c'est la feuille 0 du fichier excell qu'on va utiliser*/
    $worksheet=$objPHPExcel->getSheet(0);
    Là du coup j'ai
    Parse error: syntax error, unexpected ‘;’ in /home/espaceimy/www/wp_jerome_de_warzee/wp-content/plugins/insert-php/insert_php.php(48) : eval()’d code on line 4
    et pour la forme j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [insert_php]
    $artout="jdw";
    /** Charger la bibliothèque **/ 
    echo $_SERVER['DOCUMENT_ROOT'];
    include( $_SERVER['DOCUMENT_ROOT'].'/agenda/Classes/PHPExcel/IOFactory.php' );
    echo $_SERVER['DOCUMENT_ROOT'];
    et la j'ai ça :

    /home/espaceimy/www
    Warning: require(/home/espaceimy/www/agenda/Classes/PHPExcelhttp://espaceimy.cluster010.ovh.net/agenda/Classes/PHPExcel/Autoloader.php) [function.require]: failed to open stream: No such file or directory in /home/espaceimy/www/agenda/Classes/PHPExcel/IOFactory.php on line 35

    Fatal error: require() [function.require]: Failed opening required '/home/espaceimy/www/agenda/Classes/PHPExcelhttp://espaceimy.cluster010.ovh.net/agenda/Classes/PHPExcel/Autoloader.php' (include_path='.:/usr/local/php5.3/lib/php:/home/espaceimy/www/wp_jerome_de_warzee/wp-content/plugins/background-manager/vendor/OAuth/lib') in /home/espaceimy/www/agenda/Classes/PHPExcel/IOFactory.php on line 35

    Et du coup je pige encore moins puisqu'il me renvoit /home/espaceimy/www avant la ligne qui est censée le ramener à la racine.

    Bon je suis complètement largué donc la question est peut être idiote mais je tente :

    Est ce que tout ça ne viendrait pas du fait que je suis dans une page WP, du coup si je donne le bon chemin pour "mon" php qui à besoin d'allez dans ./agenda est ce que je ne prive pas WP d'allez dans un chemin autre qu'il aurait besoin ?

    Bon là je vais pleurer 5 minutes, manger un pot de Nutella et boire un verre et je reviens

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par Yepazix Voir le message
    Je ne veux pas savoir dans quel dossier est un fichier, je veux me mettre dans ce dossier.
    En d'autres termes, tu n'es perdu : c'est le reste du monde qui ne se trouve pas au bon endroit.

    Pour aller quelque part, il faut savoir d'où on part. Paris-Rome ou Tombouctou-Rome, ce n'est pas exactement la même route.

    Pour aller de www/wp_jdw/theme/lush/agenda/index.php à www/agenda/Classes:
    - soit tu remontes l'arborescence à coup de /...
    - soit tu modifies le include_path.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Membre éprouvé
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 046
    Par défaut
    Bon là je suis occupé de tester des trucs.
    J'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [insert_php]
    $artout="jdw";
    $chemin1 = $_SERVER['DOCUMENT_ROOT'];
    $chemin2 = '/agenda';
    $chemin = $chemin1.$chemin2;
     
    $dir    = $chemin;
    $files1 = scandir($dir);
    $files2 = scandir($dir, 1);
    print_r($files1);
    print_r($files2);
    Ce qui me permet de voir que je suis dans le bon dossier (www/agenda) puisqu'il m'affiche le contenu de ce dossier.
    Le souci c'est que quand je fais ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set_include_path(get_include_path() . PATH_SEPARATOR . $chemin);
    include 'PHPExcel/IOFactory.php';
    J'ai toujours ce dudju de message d'erreur :

    Warning: include(PHPExcel/IOFactory.php) [function.include]: failed to open stream: No such file or directory in /home/espaceimy/www/wp_jerome_de_warzee/wp-content/plugins/insert-php/insert_php.php(48) : eval()'d code on line 24

    Warning: include() [function.include]: Failed opening 'PHPExcel/IOFactory.php' for inclusion (include_path='.:/usr/local/php5.3/lib/php:/home/espaceimy/www/wp_jerome_de_warzee/wp-content/plugins/background-manager/vendor/OAuth/lib:/home/espaceimy/www/agenda') in /home/espaceimy/www/wp_jerome_de_warzee/wp-content/plugins/insert-php/insert_php.php(48) : eval()'d code on line 24

    Fatal error: Class 'PHPExcel_IOFactory' not found in /home/espaceimy/www/wp_jerome_de_warzee/wp-content/plugins/insert-php/insert_php.php(48) : eval()'d code on line 28
    En ce qui concerne la suggestion de Celira est ce que je peux l'utiliser sans risque dans mon cas de figure ?
    A savoir c'est ici du code que j'exécute dans une page WORD PRESS.
    Si je change le Include path est ce que je ne risque pas d'altérer des fonctions de Word Press ?

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    euh... tu changes déjà le include_path, là. C'est exactement ce que fait la fonction set_include_path
    Ensuite, si les classes que tu cherches sontdans www/agenda/Classes, le chemin à ajouter est $_SERVER['DOCUMENT_ROOT'].'/agenda/Classes'.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour l'hebergement d'un site de 1 à 5go de video flv?
    Par ned-flanders dans le forum Hébergement
    Réponses: 3
    Dernier message: 22/02/2008, 12h22
  2. Hebergement web - plusieurs site sur plusieurs serveur
    Par annega22 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 4
    Dernier message: 23/04/2007, 17h52
  3. Réponses: 1
    Dernier message: 13/10/2006, 14h52
  4. hebergement d'un site asp
    Par hamida sara dans le forum ASP
    Réponses: 1
    Dernier message: 11/09/2006, 15h27
  5. [Infos-conseil]Hebergement d'un site
    Par Sunchaser dans le forum Hébergement
    Réponses: 3
    Dernier message: 05/08/2006, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo