Problème avec fonction personnalisé en php
Résolu/Fermé- Script '/var/www/html/index.php' not found or unable to stat
- Fonction si et - Guide
- Easy php - Télécharger - Divers Web & Internet
- Story personnalisé facebook c'est quoi - Guide
- Fonction moyenne excel - Guide
- Tri personnalisé excel - Guide
9 réponses
24 sept. 2022 à 18:01
Apache ou Nginx ou autre ?
As-tu un message d'erreur ?
Apache -> /var/log/apache2/error.log (sauf si définit autrement sur le vhost)
Nginx -> /var/log/nginx/error.log (même remarque)
Bonjour,
J'utilise apache2, dans le fichier d'erreur, il y en a une mais qui je pense n'a rien à voir, la voici:
[Sat Sep 24 17:28:28.374559 2022] [php7:error] [pid 6029] [client 90.151.171.106:7006] script '/var/www/html/ip.php' not found or unable to stat, referer: https://www.google.com/
Sinon il n'y a rien de spécial.
24 sept. 2022 à 19:47
Bonjour,
Quel est le code php de cette fonction ?
Quel est le nom du fichier qui la contient ? Où as tu placé ce fichier ?
Comment y fais tu appel ? As tu inclus le fichier qui la contient dans le fichier où tu veux l'utiliser ?
Le message d'erreur parle d'un fichier ip.php .. c'est celui la ? Il se nomme bien comme ça ( y compris le respect des majuscules/minuscules dans le nom du fichier ) ?
Quels sont les droits sur ce fichier ? as tu bien autorisé son exécution ?
Bonsoir,
Je vais vous coller le code de mon fichier.
Le fichier s'appelle test_edt.php, il est placé dans /var/www/perso/.
Je fais appel à ce fichier directement par l'url et les droits sont en 777.
In'y a pas d'inclusion de fichier à part au début pour la bdd.
Voici le code et je précise encore que le fichier mentionné dans l'erreur n'est pas du tout un fichier utilisé dans ce script:
<?php include("bdd.php");
$nombre = date('W');
if($nombre%2 != 0)
{$semaine = 'a';}
else {$semaine = 'b';}
function edt($jour,$s)
{$req=$bdd->prepare('SELECT * FROM edt WHERE jour=? AND (semaine=? OR semaine=c)');
$req->execute(array($jour,$s));
while ($donnees = $req->fetch())
{echo $donnees['heure'].' '.$donnees['matière'].'<br/>';
}
} ?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8"/>
<title>Emploi du temps</title>
</head>
<body>
<h1>Emploi du temps</h1>
<p>Nous sommes en semaine <?php echo $semaine; ?>.</p>
<h2>Lundi</h2>
<p><?php edt('lundi',$semaine); ?></p>
<h2>Mardi</h2>
<?php edt('mardi',$s); ?></p>
<h2>Mercredi</h2>
<p><?php edt('mercredi',$semaine); ?></p>
<h2>Jeudi</h2>
<p><?php edt('jeudi',$semaine); ?></p>
<h2>Vendredi</h2>
<p><?php edt('vendredi',$semaine); ?></p>
</body>
</html>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 24 sept. 2022 à 21:46
C'est donc bel et bien un souci de connaissances sur l'écriture du code php ...
Donc, en gros, ton code devrais ressembler à ça
<?php //-----------------------------------------// //Affichage des éventuelles erreurs PHP : //( à lire : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code ) //-----------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //-----------------------------------------// //connexion à la bdd // visiblement, tu as un fichier contenant la connexion en PDO // Merci d'appliquer ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs //-----------------------------------------// require_once "bdd.php"; $nombre = date('W'); $semaine = $nombre%2 != 0 ? 'a' : 'b'; // ecriture en "ternaire" de ton if/else function edt($jour,$s) { global $bdd; // on rend la variable $bdd accessible dans la fonction try{ $req=$bdd->prepare('SELECT * FROM edt WHERE jour=? AND (semaine=? OR semaine=c)'); $req->execute(array($jour,$s)); while ($donnees = $req->fetch()){ echo $donnees['heure'].' '.$donnees['matière'].'<br/>'; // Attention à ne pas utiliser de caractères accentués dans le nom des champs de tes tables ou de tes tables elles mêmes !! } }catch(Exception $e){ echo "Erreur sql " . $e->getMessage(); } } ?> <!doctype html> <html lang="fr"> <head> <meta charset="utf-8"/> <title>Emploi du temps</title> </head> <body> <h1>Emploi du temps</h1> <p>Nous sommes en semaine <?php echo $semaine; ?>.</p> <h2>Lundi</h2> <p><?php edt('lundi',$semaine); ?></p> <h2>Mardi</h2> <?php edt('mardi',$semaine); ?></p> <h2>Mercredi</h2> <p><?php edt('mercredi',$semaine); ?></p> <h2>Jeudi</h2> <p><?php edt('jeudi',$semaine); ?></p> <h2>Vendredi</h2> <p><?php edt('vendredi',$semaine); ?></p> </body> </html>
Bonjour,
Merci beaucoup pour votre code.
Maintenant, mes jours de la semaine en html, s'affiche tous contrairement à avant, mais ma fonction ne fonctionne toujours pas, sans erreur sur la page ni dans les logs de php ou d'apache2
Merci pour votre aide, je ne comprends pas pourquoi ça ne marche pas.
25 sept. 2022 à 09:14
Tu as regardé les commentaires dans le code que je t'ai mis ?
Tu as appliqué ce qui était demandé concernant l'activation des erreurs PDO ?
Tu peux nous montrer ton fichier de connexion à la base ?
25 sept. 2022 à 09:15
J'en doute.... Vu que ta requête SQL contient une erreur et si aucun message d'erreur n'apparaît c'est bien que tu n'as pas suivi ce que je t'ai demandé
Effectivement j'avais oublié une partie du code de l'article que vous m'avez envoyé.
Désolé, voici l'erreur:
Erreur sql SQLSTATE[42S22]: Column not found: 1054 Unknown column 'c' in 'where clause'
Modifié le 25 sept. 2022 à 09:30
C'est bien ce que je disais ta requête SQL contient une erreur....
Tu as oublié de mettre des quotes autour de la valeur c dans ton where.
Ah ok merci, mais c'est quoi des quotes?
25 sept. 2022 à 10:12
des 'apostrophes' ou des "guillemets"