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

Bibliothèques et frameworks PHP Discussion :

[PEAR] Fatal error: require_once(): Failed opening required 'HTML/Table/Storage.php'


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 1
    Points
    1
    Par défaut [PEAR] Fatal error: require_once(): Failed opening required 'HTML/Table/Storage.php'
    Bonjour,

    Je viens solliciter votre aide pour résoudre un problème auquel je suis confronté depuis que j’ai transféré mon site web chez mon hébergeur (1and1).

    Mon site web a été conçu en local sous wamp puis transferé chez l’hébergeur (1and1). Le transfert s’est déroulé « normalement » : tous les dossiers, sous-dossiers et fichiers sont présents. Mais, quand j’essaie d’y accéder en entrant mon nom de domaine dans la barre d’adresse, j’ai ce message d’erreur :
    Fatal error: require_once(): Failed opening required 'HTML/Table/Storage.php' (include_path='.:/homepages/45/d508047579/htdocs/dokeos/main/inc/lib/pear:/usr/lib/php5.4') in /homepages/45/d508047579/htdocs/dokeos/main/inc/lib/pear/HTML/Table.php on line 40
    je suis débutant en php et mon expérience en tant que Développeur est par conséquent très limitée. De plus tout ceci me semble pour l'instant être du charabia.C'est pourquoi je sollicite votre aide.
    Voici l’extrait de mon code Table.php.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    /**
     * Requires PEAR, HTML_Common and HTML_Table_Storage
     */
    require_once 'PEAR.php';
    require_once 'HTML/Common.php';
    require_once 'HTML/Table/Storage.php';
     
    /**
     * PEAR::HTML_Table makes the design of HTML tables easy, flexible, reusable and efficient.
    ?>
    J’ai vérifié que le répertoire 'HTML/Table/Storage.php' est bien présent dans l’arborescence à l’endroit prévu. Quelqu’un a-il une idée pour résoudre ce problème ? je vous remercie d’avance pour votre aide.

  2. #2
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Bonsoir,

    Peux tu nous mettre ton arborescence de dossiers, sans quoi nous aurons du mal à visualiser la situation.

    D'autre part, as-tu vérifier que les droits sur les fichiers en question sont corrects ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Fatal error :Failed openning required 'HTML/Table/Storage.php'
    Bonjour

    Je vais commencer par ta deuxième question.
    Effectivement j'ai vérifié et corrigé les droits en utilisant CHMOD 777. Mais je ne sais pas si c'est recommendé d'accorder les droits de lecture, écriture et exécution à tous les utilisateurs comme je l'ai fait.
    D'autre part, le fichier storage.php a été crée avec la version PHP.4 au lieu de 5.4 que j'applique à mon site. Je ne sais toujours pas comment adapter les scripts à la bonne version du PHP.

    Ci-dessous l'arborescence des dossiers

    .:/main/inc/lib/pear/HTML
    .:/main/inc/lib/pear/OLE
    .:/main/inc/lib/pear/Pager
    .:/main/inc/lib/pear/Spreadsheet_Excel_Writer
    .:/main/inc/lib/pear/Text
    .:/main/inc/lib/pear/PEAR.php


    .:/main/inc/lib/pear/HTML/QuickForm
    .:/main/inc/lib/pear/HTML/Table
    .:/main/inc/lib/pear/HTML/Common.php
    .:/main/inc/lib/pear/HTML/QuickForm.php
    .:/main/inc/lib/pear/HTML/Table.php

    .:/main/inc/lib/pear/HTML/Table/Storage.php

  4. #4
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Bonsoir,

    Il n'est en effet pas recommandé de mettre des droits en 777. Mais au moins on sait que le problème ne provient pas de là.
    Des droits en 644 seraient suffisants je pense dans ta situation.
    Ci après un lien intéressant listant quels droits mettre dans quel contexte : http://forums.web4all.fr/topic/3727-...-vos-fichiers/

    Pour en revenir à ton problème, je ne vois pas de soucis dans ton arborescence :
    - l'include path est connu;
    - les 2 premiers require() sont fonctionnels;
    - le fichier du dernier require() est bien présent dans l'arbo et dans le path attendu.

    Par hasard (on ne sait jamais), n'as tu pas une différence de casse dans le nom de ton fichier et/ou répertoire ? Une majuscule en trop ou moins par exemple, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .:/main/inc/lib/pear/HTML/Table/storage.php
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .:/main/inc/lib/pear/HTML/Table/STorage.php
    ?

    Un test intéressant à faire également serait de vérifier l'existence du fichier avec la fonction is_file().
    http://fr.php.net/manual/fr/function.is-file.php

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour eaglesnipe

    Je te remercie pour tes observations et commentaires.
    D'autrepart, j'aimerai bien appliquer le test avec "is_file()" que tu me recommande.
    Mais, comme je suis débutant en php, peux-tu me décrire la procdure pas à pas comme tu l'as fait pour vérifier l'existence ou non de la casse dans le nom de fichier et/ou des répertoire ?

    En effet, je ne sais pas si je dois éditer le fichier "storage.php" qui n'est pas reconnu et y insérer le code "is_file()"
    Si oui à quelle emplacement.

    A propos de la casse, en fait les nom de dossiers et fichiers sont exactement comme dans l'arbo que je t'ai mis en haut car, j'ai juste fait une copie du répertoire.

    Enfin je te remercie infiniment pour les liens sur les droits. Le site en question est très didactique.

  6. #6
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Bonjour arakscons,

    L'utilisation de la fonction is_file() est vraiment simple.

    Test souhaité :
    • Vérifier que le fichier à charger (HTML/Table/Storage.php)depuis le script /HTML/Table.php existe bien et est régulier


    Résultat attendu :
    • La fonction renvoi un booléen, donc TRUE si le fichier est OK, FALSE sinon.


    Le test :
    • Dans ton script /HTML/Table.php, avant ton require() problématique
    • L'instruction est la suivante
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      var_dump(is_file(HTML/Table/Storage.php));
    • Plus qu'à regarder le résultat
      • Si TRUE, le problème est autre
      • Si FALSE, le fichier n'existe pas (path incorrect, casse non respectée, etc.) ou droits insuffisants.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    je te remercie pour ta réponse. Voici comment j'ai donc opéré :
    j'ai utilisé FileZila pour accéder au dossier. Ensuite j'ai inséré le comme ci-après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var_dump(is_file(HTML/Table/Storage.php));
    /**
     * Requires PEAR, HTML_Common and HTML_Table_Storage
     */
    require_once 'PEAR.php';
    require_once 'HTML/Common.php';
    require_once 'HTML/Table/Storage.php';
    Ensuite j'ai eu le résultat suivant :
    Commande : STOR Table.php
    Reponse 150 opening ASCII mode data connection for table.php.
    Reponse Transfert complet

    A moins que l'insertion ne soit pas là ou je l'ai placée. je n'ai ni True ni False.
    J'ai où vu de cequi précède le sentiment qu'une partie des fichiers est transmis en mode text et non pas en php.
    As tu la même lecture ?

  8. #8
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Arakscons,

    Erratum dans ma requête, j'ai omis les quotes. L'instruction exacte est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump(is_file('HTML/Table/Storage.php'));
    A la limite met un juste après le is_file() pour ne pas polluer la page avec la suite des instructions.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonsoir eaglesnipe

    J'ai refait le test en prenant en compte tes dernières proposition.
    ci-dessous le résulat obtenu :
    Commande : SYST
    Réponse : 215 UNIX Type: L8
    Commande : FEAT
    Réponse : 211-Features:
    Réponse : MDTM
    Réponse : MFMT
    Réponse : TVFS
    Réponse : UTF8
    Réponse : MFF modify;UNIX.group;UNIX.mode;
    Réponse : MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
    Réponse : REST STREAM
    Réponse : LANG bg-BG;en-US*;fr-FR;it-IT;ja-JP;ko-KR;ru-RU;zh-CN;zh-TW;es-ES
    Réponse : SIZE
    Réponse : 211 End
    Commande : OPTS UTF8 ON
    Réponse : 200 UTF8 set to on
    Statut : Connecté
    Statut : Récupération du contenu du dossier...
    Commande : PWD
    Réponse : 257 "/" is the current directory

    Commande : TYPE I
    Réponse : 200 Type set to I
    Commande : PASV
    Réponse : 227 Entering Passive Mode (82,165,166,187,210,6).
    Commande : MLSD
    Réponse : 150 Opening BINARY mode data connection for MLSD
    Réponse : 226 Transfer complete
    Statut : Contenu du dossier affiché avec succès

    je précise qu'après avoir utilisé le code que tu m'as proposé, n'obtenant ni "true" ni "false",
    j'ai essayé le code suivant :
    if (file_exists('HTML/Table/Storage.php'))
    echo 'Found';
    else
    echo 'Not found';

    Quelle interprétation en fait tu ? J'ai juste le sentiment que le résultat de la commande Pwd indique que le chemin est le chemin du repertoire ou du dossier.Mais, je ne suis pas sûre.

  10. #10
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Arakscons,

    Les résultats que tu présentent sont ceux du client Filezilla. Filezilla est un outil permettant de transférer des fichiers vers un serveur distant mais en aucun cas d'exécuter les scripts en question...

    Tu tu as donc apporté les modifications au fichier et tu l'as uploadé sur le serveur. OK.
    Maintenant il te faut lancer ta page de manière classique, tel que tu le faisais en localhost sous WAMP, depuis ton navigateur (Sauf que tu ne travailles plus en localhost mais que tu cible ton hébergement.)

    D'autre part, tu as mis en place le test avec la fonction file_exists(). C'est un bon début, mais il faudrait le pousser en vérifiant également le comportement avec la fonction is_file() pour confirmer qu'il s'agisse bien d'un fichier régulier...

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour Eaglesnipe

    Ton dernier message as permis d'évacuer les doutes que j'avais.
    J'ai effectué le test comme prévu. Mais le résultat est le même. C'est à dire pas de réponse
    du serveur. On n'a ni la réponse "True" ni "False". J'avais rentré les codes comme ci-après.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (file_exists('HTML/Table/Storage.php'))
        echo 'Found';
    else
        echo 'Not found'
    var_dump(is_file('HTML/Table/Storage.php')) . "\n";
    var_dump(is_file('/usr/lib/')) . "\n";
    Au vu de ce résultat, j'ai émis l'hypothèse que le problème viendrait peut-être du Serveur.
    J'ai pris contact avec l'hébergeur 1and1. Il procède à des vérifications et me donnera une réponse demain ou après demain.

  12. #12
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Arakscons,

    Petite question, comment exécutes-tu ton script ?
    CLI ? GUI ?

    Est-tu sûr de bien lancer le bon script ?

    Petite remarque également : la fonction is_file renvoit un booléen (toujours se référer à la doc). Tu obtiendras donc un 1 ou un 0 comme résultat, et non pas les chaines de caractères 'true' ou 'false'.

    Il n'y a aucune raison que le serveur ne puisse pas répondre à ce type de demande des plus basiques. Le problème ne vient certainement pas de ce dernier.

    As-tu tenté ne serait-ce qu'un simple fichier html

    index.html
    et fichier php

    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo 'Hello World! '; ?>
    ?

    N'hésite pas à effectuer un tuto pas à pas PHP pour apprendre les bases.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour eaglesnipe.

    Effectivement, j'ai effectué des tests en utilisant index.html et index.php.
    J'ai utilisé pour cela une méthode proposée par le guide d'installation de ma base de donnée.
    Par cette voie j'aurai pu contourner le problème en faisant la mise à jour avec la dernière version.
    Mais, le serveur ne reconnaissait pas le dossier qui est pourtant installé dans mon espace web.

    Cette après-midi, le support technique m'a informé avoir identifié un problème au niveau du DNS.
    Après correction, je devrais attendre quelques heures pour vérifier s'il y a un changement.

    Cela étant, j'ai mis à profit ce temps d'attente pour me documenter sur l'exécution de scripts php par cli ou GUI que je découvre en ce moment

    Bonne fin de journée

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonsoir

    Après des recherches, j'ai plus de questions que de réponses.
    S'agissant de l'exécution des scripts en GUI (Interface utilisateur Graphique
    ou CLI (Interface de Ligne de commandes). J'ai cru comprendre qu'il s'agit de deux méthodes d'exécution de scripts sous Linux.Elles fonctionnent via un interprétateur de commandes. J'ai cru comprendre aussi que l'exécution en CLI peut être identifiée par # ou $.

    Ma question est toute bête doit-on disposer obligatoirement de Linux installé sur son Pc pour exécuter un script ?

    Merci par avance

  15. #15
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Linux n'est en rien une obligation pour l'exécution de scripts PHP.
    Il suffit simplement d'avoir un serveur Web d'installé sur sa machine (en plus évidemment de PHP), et ce quel que soit le système d'exploitation. Le plus connu d'entre eux est Apache.
    L'architecture WAMP par exemple te permet d'avoir Apache MySQL PHP d'installer sur un environnement Windows (sur n'importe quel ordinateur bureautique).

    PHP peut ensuite être exécuté en GUI, c'est à dire via un appel de pages dans un navigateur des plus classiques (c'est 95% des cas d'utilisations et certainement ton cas aussi), soit en CLI, c'est à dire par un appel d'un script particulier en ligne de commande, typiquement pour faire tourner des moteurs ou des traitements de fond. Oublions ce second cas, je ne pense pas qu'il te concerne.

    Ce que je ne comprends pas, c'est que dans ton tout premier post tu nous affiche :

    Fatal error: require_once(): Failed opening required 'HTML/Table/Storage.php' (include_path='.:/homepages/45/d508047579/htdocs/dokeos/main/inc/lib/pear:/usr/lib/php5.4') in /homepages/45/d508047579/htdocs/dokeos/main/inc/lib/pear/HTML/Table.php on line 40
    C'est donc bien qu'à un moment ou un autre tu as bien appelé ta page PHP via ton navigateur pour obtenir l'erreur et donc que tu sais comment faire non ? D'autant plus si tu nous confirme que tu as fait des tests avec un index.php. La méthodologie ne change en rien pour la suite.
    Il te suffit simplement d'ajouter les instructions de tests que tu souhaites (voir plus haut) et relancer l'appel de manière classique.

Discussions similaires

  1. Fatal error: require_once(): Failed opening required '__DIR__\bootstrap.php'
    Par MInfo25 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/01/2018, 18h48
  2. [Smarty] Failed opening required '../Smarty/Smarty.class.php'
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 11/11/2010, 20h31
  3. Réponses: 2
    Dernier message: 03/12/2009, 17h38
  4. [PEAR][DB] Error pear : DB_DataObject Error: Connect failed, turn on debugging to 5 see why
    Par lailalachir dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/07/2007, 15h51
  5. [EasyPHP] Fatal error: Can't open privilege tables
    Par lou0123 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 13/04/2006, 17h35

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