


PHP Fatal error: require(): Failed opening required '../../../../include/connexion.php' (include_path='.:/usr/share/php:/srv/data/web/') in /srv/data/web/vhosts/www.domaine.fr/htdocs/stats/su.php on line 2
Ce message, personnellement, est survenu au moment où j'ai fait la mise à jour demandée par mon serveur de ma base de données et de la version de PHP. Versions supérieures.
Solution :
cela signifie que vous avez plusieurs fois un include ou require du même fichier. En gros vous appelez 2 voire plusieurs fois le même fichier à s'inclure.
Donc, dans chaque fichier, vous n'incluez qu'une seule fois le fichier souhaité. Pour cela, mettez-le en haut de votre fichier php sans condition php en amont, cela bloquerait le fonctionnement du fichier à inclure si la condition n'est pas respectée. Par exemple si vous faite :
if(isset($_SESSION['affiche']))
{
// on affiche le script
}elseif(isset($_SESSION['affiche2']))
{
// on affiche mon script
}else
{
// la poubelle, par défaut !
}
Dans cet exemple, si vous mettez votre fichier à inclure dans la condition isset($_SESSION['affiche2'], le fichier inclus ne s'executera pas pour les autres conditions ! Donc, mettez le bien en haut de toute condition PHP.
Du chemin relatif mal entré ! A savoir que vous ne pouvez pas mettre une adresse absolue dans un include ou require, sinon vous aurez cette erreur :
[24-Jun-2017 09:39:40 UTC] PHP Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /srv/data/web/vhosts/www.mondomaine.fr/htdocs/stats/ioe/su.php on line 3
Comme vous pouvez le voir, pour pouvoir réaliser cela, il faut modifier votre php.ini, et mettre allow_url_include=1. Ne le faites pas ! Car une personne pourrait inclure une page depuis son site ou un script et récupérer votre script !!!
Pour rappel :
adresse absolue : http://phpmac.alwaysdata.net/admin/fichier1/fichier2/index.php
Adresse relative : ../../../index.php
Pour plus de précisions : https://www.alsacreations.com/article/lire/254-le-point-sur-la-fonction-include-php.html
require($_SERVER['DOCUMENT_ROOT'].'/fichier1/fichier2/fichierphp.php');
ou
include($_SERVER['DOCUMENT_ROOT'].'/fichier1/fichier2/fichierphp.php');
Cette solution fonctionnera toujours, même si vous changez d'hébergeur ou de nom de domaine !
PHP Fatal error: Cannot redeclare injectionfonction() (previously declared in /srv/data/web/vhosts/www.domaine.fr/htdocs/erreurmail/zer.php:27) in /srv/data/web/vhosts/www.domaine.fr/htdocs/erreurmail/zer.php on line 27
Je vous rassure, la première chose qu'on pourrait penser c'est qu'une fonction n'est utilisable qu'une seule fois, c'est faux ! Sinon quelle serait l'utilité des fonctions !
Le but d'une fonction, n'oubliez pas, c'est comme une matrice, pas besoin de refaire les bases du calcul, on n'a juste à ajouter nos chiffres et hop la matrice nous donne le résultat. On utilise les fonctions lorsqu'il y a répétition afin de ne pas réécrire 20 fois la même chose, alors que ce n'est que les chiffres qui changent et non le socle (la matrice), la base servant à obtenir le résultat !
Donc si on anaylse l'erreur ci-dessus, elle nous dit qu'on ne peut pas redéclarer la fonction. En fait, ce n'est pas cela qu'il faut comprendre ! Le problème c'est que vous avez inclus pusieurs fois le fichier comprenant la fonction ! Donc, tiens, ça nous rappelle des choses qu'on a vues plus haut ! Donc, une page, imbriquée ou pas, ne doit contenir qu'une inclusion de fichier, lequel peut comprendre des fonctions ou autres.. Pour cela, incluez le fichier de vos fonctions en tête du fichier php principal afin d'y voir plus clair !
// la fonction n'existe pas, la déclarer, donc inclure le fichier !
} else {
/ la fonction existe
}
Merci pour votre vote !