Connection à phpMy Admin en php (Synology)

Bonjour,

J'héberge mon site sur un serveur synology, pour me connecter à ma base de donnée j'ai écrit dans mon code php ceci:

$bdd = new PDO('mysql:localhost;dbname=table;' ,'root' , ' ' );

le problème est que je reçois ce message:

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in /volume1/web/inscription.php on line 4 PDOException: could not find driver in /volume1/web/inscription.php on line 4 Call Stack: 0.0022 133584 1. {main}() /volume1/web/inscription.php:0 0.0023 133928 2. PDO->__construct() /volume1/web/inscription.php:4

Cordialement

6 réponses

Résumé de la discussion

Le problème décrit est l'erreur Fatal error: could not find driver lors de la connexion MySQL via PDO sur un serveur Synology, ce qui souligne l'absence du driver PDO MySQL. La solution principale consiste à activer ou installer l'extension PDO MySQL dans le fichier php.ini, par exemple extension=php_pdo_mysql.dll sous Windows et son équivalent sous Linux, puis vérifier via phpinfo(). Si l'extension n'est pas disponible ou si l'accès au php.ini est restreint, il faut contacter l'administrateur système pour installer le driver PDO MySQL, ou envisager une alternative comme mysqli. D'autres éléments utiles incluent la vérification du support mysqlnd dans phpinfo et, si nécessaire, tester un script phpinfo() pour confirmer la configuration PHP et le type de driver disponible.

Bobot (l’IA à votre service)
  1. xooit21 Je peut grandement t'aider ou peut être un peu, mais il est clairement que c'est un erreur d'interception "PDOException".
    Est tu sur qu'il n'y aurait pas d'autre variable defois à la place de PDO ?
    1. Bonjour !
      Il te manque "host":
      $bdd = new PDO("mysql:host=localhost;dbname=table", "username", "password");

      Je pense que ça résoudra ton problème !

      (Ce qui m'a donné la réponse: PDO->__construct() /volume1/web/inscription.php:4, ça indique une erreur sur le constructeur, donc quand tu appelles new PDO)
      1. Bonjour,
        J'ai rajouté le "host" mais ca ne marche toujours pas.
      2. Est-ce que le fait que Phpmyadmin est sur mon synology change quelque chose? au niveau de l'adresse

        $bdd = new PDO('mysql:host=localhost;dbname=table;' ,'root' , ' ' );
      3. Oui du coup il faut mettre l'adresse de ton synology !
        host=192.168.1.45 par exemple.
        Il ne te reste plus qu'à la trouver :)
    2. Bonjour

      Si le message te dit qu'il na pas trouvé de driver, tu as un problème de configuration - indépendamment de tes autres erreurs.
      Peux-tu faire un script qui fait simplement
      phpinfo();
      pour voir quelle est ta configuration de PHP, et constater si oui ou non il y a un driver PDO pour mysql ?
      1. Normalement, ce n'est que le haut de la page, ça.
        Au-dessus, il y a la version de php
        Et plus bas, il y a un tas de rubriques, dont une qui parle des drivers PDO. Voici un extrait du phpinfo d'un de mes sites à titre d'exemple :


        Là, on voit qu'il y a un driver PDO pour mysql
        1. effectivement dans PDO driver j'ai no value, comment puis-je changer ça?
        2. Il y a dans le fichier php.ini une ligne
          extension=php_pdo_mysql.dll
          à mettre ou à décommenter si elle est en commentaire.
          MAIS
          - je ne suis pas sûr que le fichier s'appelle également php.ini sous Linux (je suis sous Windows)
          - l'extension n'est certainement pas .dll sous Linux, mais en regardant les lignes voisines tu trouveras la bonne extension pour Linux.
          - si le fichier d'extension n'est pas physiquement présent dans ton système, ça ne sert à rien de le lui indiquer, sinon à faire planter ton serveur au démarrage.

          Si tu as un responsable système qui gère ce serveur, adresse toi à lui en réclamant un driver PDO pour mysql.
        3. Autre suggestion : te passer de PDO. Si c'est toi qui écris le script, tu peux bien utiliser mysqli.
        4. dans mon serveur synology je ne peut pas accéder au fichier php.int (je ne trouve pas comment faire, il est pas visible) du coup je dois enlever PDO?
        5. Il y a plusieurs manières en PHP pour accéder à une base de données mysql. PDO est une méthode, mysqli en est une autre. Si tu ne peux pas utiliser PDO, utilise mysqli.
      2. voila

        1. mysqlnd statistics
          bytes_sent 0
          bytes_received 0
          packets_sent 0
          packets_received 0
          protocol_overhead_in 0
          protocol_overhead_out 0
          bytes_received_ok_packet 0
          bytes_received_eof_packet 0
          bytes_received_rset_header_packet 0
          bytes_received_rset_field_meta_packet 0
          bytes_received_rset_row_packet 0
          bytes_received_prepare_response_packet 0
          bytes_received_change_user_packet 0
          packets_sent_command 0
          packets_received_ok 0
          packets_received_eof 0
          packets_received_rset_header 0
          packets_received_rset_field_meta 0
          packets_received_rset_row 0
          packets_received_prepare_response 0
          packets_received_change_user 0
          result_set_queries 0
          non_result_set_queries 0
          no_index_used 0
          bad_index_used 0
          slow_queries 0
          buffered_sets 0
          unbuffered_sets 0
          ps_buffered_sets 0
          ps_unbuffered_sets 0
          flushed_normal_sets 0
          flushed_ps_sets 0
          ps_prepared_never_executed 0
          ps_prepared_once_executed 0
          rows_fetched_from_server_normal 0
          rows_fetched_from_server_ps 0
          rows_buffered_from_client_normal 0
          rows_buffered_from_client_ps 0
          rows_fetched_from_client_normal_buffered 0
          rows_fetched_from_client_normal_unbuffered 0
          rows_fetched_from_client_ps_buffered 0
          rows_fetched_from_client_ps_unbuffered 0
          rows_fetched_from_client_ps_cursor 0
          rows_affected_normal 0
          rows_affected_ps 0
          rows_skipped_normal 0
          rows_skipped_ps 0
          copy_on_write_saved 0
          copy_on_write_performed 0
          command_buffer_too_small 0
          connect_success 0
          connect_failure 0
          connection_reused 0
          reconnect 0
          pconnect_success 0
          active_connections 0
          active_persistent_connections 0
          explicit_close 0
          implicit_close 0
          disconnect_close 0
          in_middle_of_command_close 0
          explicit_free_result 0
          implicit_free_result 0
          explicit_stmt_close 0
          implicit_stmt_close 0
          mem_emalloc_count 0
          mem_emalloc_amount 0
          mem_ecalloc_count 0
          mem_ecalloc_amount 0
          mem_erealloc_count 0
          mem_erealloc_amount 0
          mem_efree_count 0
          mem_efree_amount 0
          mem_malloc_count 0
          mem_malloc_amount 0
          mem_calloc_count 0
          mem_calloc_amount 0
          mem_realloc_count 0
          mem_realloc_amount 0
          mem_free_count 0
          mem_free_amount 0
          mem_estrndup_count 0
          mem_strndup_count 0
          mem_estndup_count 0
          mem_strdup_count 0
          proto_text_fetched_null 0
          proto_text_fetched_bit 0
          proto_text_fetched_tinyint 0
          proto_text_fetched_short 0
          proto_text_fetched_int24 0
          proto_text_fetched_int 0
          proto_text_fetched_bigint 0
          proto_text_fetched_decimal 0
          proto_text_fetched_float 0
          proto_text_fetched_double 0
          proto_text_fetched_date 0
          proto_text_fetched_year 0
          proto_text_fetched_time 0
          proto_text_fetched_datetime 0
          proto_text_fetched_timestamp 0
          proto_text_fetched_string 0
          proto_text_fetched_blob 0
          proto_text_fetched_enum 0
          proto_text_fetched_set 0
          proto_text_fetched_geometry 0
          proto_text_fetched_other 0
          proto_binary_fetched_null 0
          proto_binary_fetched_bit 0
          proto_binary_fetched_tinyint 0
          proto_binary_fetched_short 0
          proto_binary_fetched_int24 0
          proto_binary_fetched_int 0
          proto_binary_fetched_bigint 0
          proto_binary_fetched_decimal 0
          proto_binary_fetched_float 0
          proto_binary_fetched_double 0
          proto_binary_fetched_date 0
          proto_binary_fetched_year 0
          proto_binary_fetched_time 0
          proto_binary_fetched_datetime 0
          proto_binary_fetched_timestamp 0
          proto_binary_fetched_string 0
          proto_binary_fetched_json 0
          proto_binary_fetched_blob 0
          proto_binary_fetched_enum 0
          proto_binary_fetched_set 0
          proto_binary_fetched_geometry 0
          proto_binary_fetched_other 0
          init_command_executed_count 0
          init_command_failed_count 0
          com_quit 0
          com_init_db 0
          com_query 0
          com_field_list 0
          com_create_db 0
          com_drop_db 0
          com_refresh 0
          com_shutdown 0
          com_statistics 0
          com_process_info 0
          com_connect 0
          com_process_kill 0
          com_debug 0
          com_ping 0
          com_time 0
          com_delayed_insert 0
          com_change_user 0
          com_binlog_dump 0
          com_table_dump 0
          com_connect_out 0
          com_register_slave 0
          com_stmt_prepare 0
          com_stmt_execute 0
          com_stmt_send_long_data 0
          com_stmt_close 0
          com_stmt_reset 0
          com_stmt_set_option 0
          com_stmt_fetch 0
          com_deamon 0
          bytes_received_real_data_normal 0
          bytes_received_real_data_ps 0
        2. j'ai envoyer un message au support Synology voir si sa viendrais d'un mauvais réglage de mon serveur.
        3. Aucune idée de comment exploiter ça. Désolé.
        4. merci de ton aide :)