Problème avec fonction personnalisé en php

Résolu/Fermé
Accessvision - 24 sept. 2022 à 17:30
 Accessvision - 25 sept. 2022 à 10:18

Bonjour,

J'ai un VPS avec un serveur web que j'ai installé moi même en récoltant des infos un peu partout pour l'installation dun serveur web sous linux.

J'ai un script php où j'ai créé une fonction que j'utilise plusieurs fois, mais le problème est que php n'arrive pas à l'effectuer.

Elle est bien écrite, les logs sont vides mais ça fonctionne pas.

J'ai essayé avec plusieurs autres fonctions que je crée, et pareil, elle ne s'exécute pas, alors qu'avec les fonctions natives à php il n'y a aucun problème.

Aurait-il quelque chose à modifier dans php.ini? Ou autre chose?

Merci d'avance pour vos réponses.

A voir également:

9 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
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)


0
Accessvision
24 sept. 2022 à 18:07

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.

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
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 ? 


0
Accessvision
24 sept. 2022 à 20:57

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>

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié 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>

0
Accessvision
25 sept. 2022 à 08:48

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.

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
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 ?

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
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é

0
Accessvision
25 sept. 2022 à 09:28

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'

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
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.

0
Accessvision
25 sept. 2022 à 09:32

Ah ok merci, mais c'est quoi des quotes?

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
25 sept. 2022 à 10:12

des 'apostrophes' ou des "guillemets"

0
Accessvision
25 sept. 2022 à 10:18

Ah ok, oui du coup là ça marche!!!!

Je comprends pas pourquoi l'autre fonction ne marchait pas parce qu'il y avait pas de requête SQL.

Bon je verrais lors de la prochaine utilisation.

Merci pour votre aide!!!!!!!

0