instruction require_once

Petit nouveau ! | 2 Messages

02 sept. 2011, 01:09

Dans mon fichier index.php, j'ai (en première ligne) l'instruction suivante pour me connecter à la base mysql : <?php require_once('/Connections/cgsavoie.php'); ?>

Le lancement du fichier me renvoi l'erreur suivante :

( ! ) Warning: require_once(/Connections/cgsavoie.php) [function.require-once]: failed to open stream: No such file or directory in G:\wamp\www\site_cgsavoie\www\gestion\cgsavoie\index.php on line 1
Call Stack
# Time Memory Function Location
1 0.0171 408904 {main}( ) ..\index.php:0

( ! ) Fatal error: require_once() [function.require]: Failed opening required '/Connections/cgsavoie.php' (include_path='.;C:\php\pear') in G:\wamp\www\site_cgsavoie\www\gestion\cgsavoie\index.php on line 1
Call Stack
# Time Memory Function Location
1 0.0171 408904 {main}( ) ..\index.php:0

Je précise que la liaison à la base est ok et que ce pb m'est apparu suite à une réinstallation de wamp et de la base, suite un gros crach informatique sur ma machine.
Qu'en est 'il, pourquoi, et quelle solution ??
J'ai passé une journée à chercher je n'ai rien trouvé j'ai déclaré forfait, mais je ne veux pas m'avouer vaincu...
Merci d'avance à mon sauveur.
Charom

ViPHP
ViPHP | 2577 Messages

02 sept. 2011, 11:42

bonjour,

Le fichier /Connections/cgsavoie.php n'existe pas ou ne se trouve pas au bon endroit.

Il doit manquer un répertoire dans include_path du fichier php.ini. Regardes ou se trouve Connections/cgsavoie.php et modifie l'include_path en concéquence sur le modèle du répertoire pear (C:\php\pear)

Mammouth du PHP | 2278 Messages

02 sept. 2011, 20:32

/QUELQUE CHOSE sous windows ça mène, me semble-t-il, à la racine du disque à partir duquel est lancée la commande, en l'occurrence G:
Où se trouve en fait le fichier à inclure?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 19672 Messages

03 sept. 2011, 00:00

/QUELQUE CHOSE sous windows ça mène, me semble-t-il, à la racine du disque
Presque, c'est la racine du répertoire web configuré dans Apache, par défaut sous Windows, c'est quelque chose du genre C:\Program Files\Apache\Apache group\htdocs\ ou quelque chose comme ça, mais ça pourrait être n'importe où ailleurs, il faut regarder dans le httpd.conf pour voir où pointe le Document_Root.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 2278 Messages

03 sept. 2011, 08:53

Je viens de tester sous unix avec le code suivant:
<?PHP
    include ("/bidules/machin.inc");
?>
et j'obtiens un message d'erreur

Code : Tout sélectionner

Warning: include(/bidules/machin.inc) [function.include]: failed to open stream: No such file or directory in /var/www/htdocs/tests/test1.php on line 2 Warning: include() [function.include]: Failed opening '/bidules/machin.inc' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/htdocs/tests/test1.php on line 2
Je crée /bidules (racine du système unix)
puis dans bidules je crée machin.inc
et le fonctionement est impeccable.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 sept. 2011, 10:59

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le bon forum
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 2577 Messages

06 sept. 2011, 15:18

A priori l'include ne tient pas compte de l'arborescence du site, mais de l'arborescence du disque. D'ailleurs on peut inclure des trucs qui ne sont pas dans l'arborescence du site (ce qui n'est pas mal en terme de sécurité).

Je maintiens que c'est un problème d'include path. Ne pas oublier qu'il y a eu réinstallation.

Mammouth du PHP | 19672 Messages

06 sept. 2011, 16:34

Le truc dans ce genre de cas : créer une constante dans un fichier de configuration basé sur le chemin absolu du répertoire racine de l'application.

Si on a par exemple à la racine un sous-répertoire conf/, dedans, on met un fichier du style appConf.php avec dedans ceci :
<?php
define('APP_ROOT', realpath(dirname(dirname(__FILE__))));
Ensuite où que ce soit dans l'application, il faut inclure ce fichier et lorsqu'on a une autre inclusion à effectuer, on la préfixe avec la constante. Même en cas de ré-installation, ça devrait toujours fonctionner.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

12 sept. 2011, 11:50

Bjre,
Merci aux profs pour l'aide.
J'ai toujours pas trouvé la réponse à mes difficultés, mais je pense bien qu'effectivement c'est un pb lié à ma réinstallation et à mon répertoire Include qui doit beugué en conséquence de cette réinstallation.
Cerise sur le gateau, si je crée de nouveaux liens vers de nouveaux fichiers(avec dream), ça fonctionne. Mais si j'efface un lien vers un fichier déjà existant et que je recréé ce lien, basta, même conséquence... Je ne vois que la solution de tout effacer et recommencer....
Mais avant, je vais encore chercher car je voudrais bien identifier ce problème qui handicape grave en cas de crash de DD. Donc lumières de la communauté toujours utiles..
Re-Merci à tou(te)s
Charom
|*()

ViPHP
ViPHP | 2577 Messages

12 sept. 2011, 15:12

Il faut que tu repères le répertoire qui contient les fichiers à inclure. Lorsque cela sera fait, tu ajouteras ce répertoire à la chaine include_path du fichier php.ini. Il faut relancer le serveur après la modification.
Ce répertoire contient le répertoire "Connections" qui contient le fichier cgsavoie.php.

Pour les liens, je ne connais pas Dreamweaver.

Eléphant du PHP | 121 Messages

13 sept. 2011, 17:36

Quel sont les chemins absolus de tes fichiers "index.php" et "/Connections/cgsavoie.php" ?

Si tu as quelque chose comme :

/path/to/index.php
/path/to/Connections/cgsavoie.php

Alors dans ton "index.php" utilise plutôt "require_once __DIR__ . '/Connections/cgsavoie.php';" et si ta version de PHP est inférieure à 5.3 utilise "dirname(__FILE__)" plutôt que "__DIR__".

Attention aussi à la casse de te répertoires, par exemple "/Connections/" ce n'est pas la même chose que "/connections/" sous Linux.