[PHP] J'ai une question très simple ! Help !!

Salut !

Je suis sous Mac et j'utilise MAMP. Je voudrais voir si le pdo est activé. Pour ça, je vais dans le fichier php.ini mais je ne trouve pas la ligne "extension=php_pdo_mysql.dll". Par contre j'ai vu cette ligne là : "extension=pdo_mysql.so".

Est ce que la ligne que je vous ai cité en dernier est la bonne ligne pour activer le PDO ?

Merci d'avance !

8 réponses

  1. Vérifier dans ton dossier d'extensions (le dossier s'appelle "ext") si le fichier "pdo.so" est présent.
    Ensuite vérifier que les lignes suivantes sont présentes dans le php.ini :

    extension=pdo.so
    extension=pdo_pgsql.so
    extension=pdo_mysql.so

    Et question simple aussi :

    as-tu tout simplement essayé d'instancier une pdo?(je suppose que oui)

    Si ca marche -> PDO est activé sur MAMP
    Si ca marche pas -> télécharge le fichier pdo.so et ajoute les lignes que j'ai cité au dessus.
    1. Salut,

      je ne trouve pas le dossier ext. J'ai par contre trouvé le dossier extension, qui ne contenait malheureusement pas pdo.so. Par contre il y avait d'autres fichiers qui ressemblait à ce que tu m'as dit.
      Voici un screenshot : https://i.imgur.com/E3nKs.png
      Au faite, dans le dossier extensions il y a un autre dossier appelé "no-debug-non-zts-20090626".

      Dans le fichier php.ini, il n'y avait pas les lignes que tu m'as citées. Il y avait ça par contre :
      ;extension=apc.so
      
      extension=imap.so
      extension=yaz.so
      extension=mcrypt.so
      extension=gettext.so
      extension=pgsql.so
      extension=pdo_pgsql.so
      extension=pdo_mysql.so


      Voilà, c'est tout.

      P.S.: Dans le code qui me permet de me connecter à ma BDD, j'ai fait un script qui écrit l'erreur sur ma page. Et ça me met ça : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
      1. Vérifie d'abord qu'il n'est pas instalé
        if (!defined('PDO::ATTR_DRIVER_NAME')) {
        echo 'PDO unavailable';
        }
        
    2. Vérifie d'abord qu'il n'est pas installé
      if (!defined('PDO::ATTR_DRIVER_NAME')) { 
      echo 'PDO unavailable'; 
      } 
      


      du manuel php:
      PDO and the PDO_SQLITE driver is enabled by default as of PHP 5.1.0

      Si tu as PHP > 5.1.0 il est forcement installé, en plus tu utilise MAMP, je vois pas comment PDO ne pourrais pas être installé.
      1. tu peux aussi faire <?php echo phpinfo(); ?>
    3. J'ai essayé le code et ça ne me mettait rien. Donc c'est que PDO doit bien être installé. Mais c'est peut-être qu'il n'est pas activé.
      1. Il est activé, essaie de l'instancier.

        try { 
            $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password); 
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        } catch(PDOException $e) { 
            echo 'ERREUR: ' . $e->getMessage(); 
        }
        1. Mais qu'est ce que ça veut dire instancier ?
          1. Et bien tu as vu le code que je viens e te donner, c'est de l'instanciation. Tu appel le driver PDO,
            new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
          2. comment ça appeler le driver PDO ?
          3. Et bien, PDO c'est un driver, un outil avec lequel tu peux te connecter à la base de donnés et retrouver les donnés. L'instancier c'est tout simplement l'utiliser
          4. Ah mais quand tu l'instancifie, c'est quand tu vérifies si tu es bien connecté (enfin, si ton code a bien fonctionné) ?
        2. Et bien voilà, PDO c'est un genre de class, les class sont instanciers avec
          include 'classname.php';
          $var = new ClassName();

          classname.php contiendra la class ClassName() qui contient des proprietés des fonctions par exemple:

          class Classname {
          function hello() {
          return "Hello World";
          }
          }

          Donc $var = new ClassName();
          echo $var->hello(); produira Hello World;

          La même chose avec le PDO, PDO c'est une class qui contient des fonctions (connect ...etc) que tu utilisera pour retrouver les donnés
          PDO est inclue dans PHP par default donc $pdo = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password); directement.

          J'éspère que ça t'aide un peu.
          Tiens moi au courant si tu veux en apprendre plus.