Bonjour à tous.

Voilà mon problème, je sais que j'ai un problème dans mon php c'est pourquoi j'ai tenté "d'enregistrer" l'erreur dans un fichier pour m'aider à le résoudre seulement je me retrouve avec mon erreur et mon fichier qui ne s'enregistre pas. Je suis un peu bloqué. Un peu d'aide serait la bienvenue :)

Ma requête Ajax qui fonctionne:

if(id_car && start && end && start<end && moment<start){

                        $.ajax({
                            url: 'formulairetest.php',
                            type: 'POST',
                            data: 'type=formul&id_car='+id_car+'&id_user='+id_user+'&start='+start+'&end='+end,
                            dataType: 'json',

Mon php:

if($type == 'formul'){ 

    $select_cars = $_POST['id_car'];
    $id_user = $_POST['id_user'];
    $start = $_POST['start'];
    $end = $_POST['end'];
    $path_error = "./logs/debug_pdo.txt";

try {  
    $stmt_start = $pdo_process->prepare("SELECT * FROM skinned WHERE id_car = :id_car AND start <= :start AND end >= :start");
    $stmt_start->bindParam(':id_car' => $id_car);
    $stmt_start->bindParam(':start' => $start); 
    $stmt_start->execute();

    $cnt_start = $stmt_start->rowCount();

    }catch (PDOException $e){
        file_put_contents($path_error, date("Y-m-d H:i:s") ." Error ID: UPDATE buff_cut IN cut_vannes.php " .$e->getMessage() ."\n", FILE_APPEND);  
    }

try {  
    $stmt_end = $pdo_process->prepare("SELECT * FROM skinned WHERE id_car = :id_car AND start <= :end AND end >= :end");
    $stmt_end->bindParam(':id_car' => $id_car);
    $stmt_end->bindParam(':end' => $end); 
    $stmt_end->execute();

    $cnt_end = $stmt_end->rowCount();

    }catch (PDOException $e){
        file_put_contents($path_error, date("Y-m-d H:i:s") ." Error ID: UPDATE buff_cut IN cut_vannes.php " .$e->getMessage() ."\n", FILE_APPEND);  
    }

    if (!$chk_start && !$chk_end){ 

        try {  
            $pdo_process->query("INSERT INTO skinned(`start`, `id_user`, `end`, `id_car`) VALUES('$start','$id_user','$end','$select_cars')");
            if($pdo_process)
                echo json_encode(array('status'=>'success'));
            else
                echo json_encode(array('status'=>'failed'));

        }catch (PDOException $e){
        file_put_contents($path_error, date("Y-m-d H:i:s") ." Error ID: UPDATE buff_cut IN cut_vannes.php " .$e->getMessage() ."\n", FILE_APPEND);  
        }
    }
}

J'ai tenté de rajouter des try / catch pour récupérer les erreurs dans mon fichier "debug_pdo.txt" mais cela ne fonctionne pas. Merci pour votre aide :)

5 réponses


betaWeb
Réponse acceptée

Je n'avais pas compris que c'était en prod, je pensais que c'était en dev. Donc là oui, logger les erreurs est plus pertinent.
Maintenant, soit il y a un souci de permissions, soit il te faut créer au préalable ton fichier de log si ce n'est pas fait, et lui attribuer les bons droits.

Salut,

Tu es sous Windows, Linux ou OSx (donc Linux également) ? Car ça peut tout simplement être un problème de permissions en écriture.
Mais au lieu de faire comme ça, tu peux renvoyer ton erreur au front (via un simple echo), puis la log dans la console.

ADN
Auteur

Salut et merci pour ta réponse
J'ai verifier mes autorisation et c'est bon j'ai bien RWX-RWX-RWX. Donc tout va bien de ce coté la.
Je sais que je peux fonctionner avec echo mais j'aimerais reussir a mettre en place ce systeme pour que le site un fois lancé si j'ai un problème je n'ai plus qu'a aller dans le fichier log pour voir ce qui ce passe. :)

pour savoir quel est l'utilisateur qui execute php (sous linux)
<?php echo exec('whoami'); ?>

@Betaweb en prod je préfère aussi logger dans un fichier plutot que d'afficher des données sensibles

ADN
Auteur

Salut et merci pour vos réponses.
Vous avez vu juste. Je pensais être bon au niveau des droits mais en cherchant un peu plus mon nouveau dossier "log" n'étais pas dans le bon groupe de droit. Donc evidement impossible pour lui de créer un fichier en cas d'erreur php. En tout cas merci je ne cherchais pas dutout dans la bonne direction... :)

Sujet résolu.