Partage
  • Partager sur Facebook
  • Partager sur Twitter

Migration BD MySQL vers Free

Try pas reconnu

    6 juillet 2020 à 11:45:57

    Bonjour à vous,

    Je me suis fait réprimander car j'ai déterré un ancien échange  :-) , j'ai écris en MP à la personne mais pas de réponse, du coup, j'ouvre un sujet

    Je veux migrer mon site en PHP sur un serveur free mais je n'ai pas trouvé comment me connecter à mysql (j'ai suivi le cours sur le PHP), ma modif de index.php n'est pas bonne mais je ne sais pas pourquoi:

    Ca marche en local avec Wamp, j'ai tout migré sur le serveur free, j'ai modifié la ligne de index.php en mettant

    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=maBD;charset=utf8;port=3306;', 'mon_login', '');
    }
    catch (Exception $e)
    {....

    Ca ne fonctionne pas non plus en mettant sql.free.fr comme host...

    J'ai mis un fichier .htaccess à la racine avec:

    <IfDefine Free>
    php 1
    </IfDefine>
    Options -Indexes

    Comme indiqué dans certaines réponses, ça faisait pareil sans le .htaccess....  mais j'obtiens toujours:

    Parse error: syntax error, unexpected '{' in /mnt/109/sda/7/7/mon_login/index.php on line 145

    145 qui est la ligne de mon try


    Je débute et je ne trouve pas le problème

    Merci d'avance pour votre aide

    Patrick

    • Partager sur Facebook
    • Partager sur Twitter
      6 juillet 2020 à 11:57:46

      Mets juste php56 1 dans ton .htaccess et vérifier que tu n'aies pas fait d'erreur (pas de BOM, sur le nom du fichier .htaccess et sans autre extension, etc)

      Si ça plante sur le try, c'est que tu es (toujours) sur la version PHP 4 puisque try a été introduit par PHP 5

      -
      Edité par julp 6 juillet 2020 à 11:59:49

      • Partager sur Facebook
      • Partager sur Twitter
        6 juillet 2020 à 19:00:02

        Merci, ça fonctionne....

        J'en profite du coup.

        Il ne trouve manifestement pas la BD indiquée puisqu'il m'écrit à l'endroit où ça se passe : "ERREUR, could not find driver" et du coup, il me vient une question:

        Lorsque je lui demande de s'y connecter:

        $bdd = new PDO('mysql:host=localhost;dbname=maBD;charset=utf8;port=3306;', 'mon_login', '');

        j'entre le nom de ma BD, mon login et, bien sûr, je n'entre pas mon mot de passe dans le code mais, comment fait-il pour s'y connecter si je ne lui indique pas de mot de passe ?

        Jusqu'à maintenant en local sur mon ordi avec Wamp, je ne m'étais pas posé la question puisque je devais m'y connecter pour que ça marche mais, sur le serveur free, ça ne doit pas se passer pareil... Je ne dois quand même pas mettre mon mot de passe dans le code ...  ?

        Patrick

        • Partager sur Facebook
        • Partager sur Twitter
          6 juillet 2020 à 19:06:14

          > could not find driver

          Ce n'est pas une question de base de données. C'est le pilote, l'interface PDO pour un SGBD donné qui n'est pas disponible (ça correspond au début du DSN, le mysql:). PDO en lui-même n'est qu'une couche d'abstraction, disons que pour illustrer il fournit les interfaces (POO) que les pilotes doivent ensuite implémenter. Derrière, pour MySQL, tu as une extension pdo_mysql qui implémente ces différentes interfaces et c'est elle qui permet réellement de s'interfacer avec MySQL mais si celle-ci n'est pas disponible, tu seras incapable de ne serait-ce que te connecter à MySQL.

          Tu as activé quelle version de PHP ?

          Avec php56 1, tu as la version 5.6.34 où PDO est activé avec les drivers pour PostgreSQL + MySQL + SQLite donc à moins d'avoir touché le DSN, tu ne devrais pas obtenir cette erreur.

          Par contre avec php 1, tu te retrouves en 5.1.3RC4-dev où PDO est disponible mais ne gère (drivers) que sqlite(2). Dans ce dernier cas, ce serait normal de se retrouver avec cette erreur.

          Il faut tout de même avouer que mettre quelque chose en production chez Free, ce n'est pas l'idée du siècle.

          -
          Edité par julp 6 juillet 2020 à 19:36:32

          • Partager sur Facebook
          • Partager sur Twitter
            6 juillet 2020 à 23:34:01

            Avec php 56 1, la page entière me donnait une erreur et du coup, je suis revenu avec php 1 dans le .htaccess mais ça ne change rien, j'ai toujours l'erreur, comme s'il ne trouvait pas mysql...

            sqlite, c'est un autre serveur de BD ?

            Pour free, j'ai pris parce que c'est gratuit et je me disais que pour tester en ligne avant plus, ce serait mieux.

            Je peux me faire héberger ailleurs, si ça doit être moins galère, ...tu te fais héberger où toi ?

            • Partager sur Facebook
            • Partager sur Twitter
              6 juillet 2020 à 23:52:27

              > Avec php 56 1, la page entière me donnait une erreur

              Quelle était-elle ?

              > je suis revenu avec php 1 dans le .htaccess

              Oublie, ça ne fonctionnera pas : impossible d'utiliser MySQL via PDO ni même mysqli avec cette version ... Seules ces foutues fonctions mysql_* obsolètes sont possibles.

              > sqlite, c'est un autre serveur de BD ?

              Oui et non : c'est du local (pas réseau), bien plus limité et pas du tout fait pour du concurrentiel. Bon, si le but est de tester et que tes requêtes SQL sont très standard, ça pourrait le faire mais j'en doute (rien que la syntaxe voire même simplement créer ta bdd)

              > Je peux me faire héberger ailleurs, si ça doit être moins galère, ...tu te fais héberger où toi ?

              Ca dépend de ton budget et de tes compétences. Honnêtement un VPS, c'est quand même le pied : tu fais ce que tu veux (parce qu'héberger autre chose que du PHP ou faire du "temps réel" en mutualisé, c'est quasi impossible) comme tu veux. La première et meilleure offre, c'est 3 € HT par mois de tête chez OVH. (c'est aussi une bonne opportunité pour apprendre tout ce qui est administration système si peu qu'on soit un minimum intéressé par ça)

              Pour du gratuit et mutualisé, je ne saurais te dire.

              -
              Edité par julp 7 juillet 2020 à 0:05:09

              • Partager sur Facebook
              • Partager sur Twitter
                7 juillet 2020 à 19:34:26

                > Avec php 56 1, la page entière me donnait une erreur

                Quelle était-elle ?

                Erreur 500 - Erreur interne du serveur

                Je l'ai remis, ça refait pareil:

                Mon .htaccess à la racine, c'est bien:

                <IfDefine Free>
                php 56 1
                </IfDefine>
                Options -Indexes

                Merci

                Patrick

                • Partager sur Facebook
                • Partager sur Twitter
                  7 juillet 2020 à 19:58:22

                  Il n'y a pas d'espace entre php et 56, je me disais c'est bizarre qu'il n'y ait pas une erreur PHP surtout que sur cette version les erreurs PHP sont affichées (display_errors à on)

                  -
                  Edité par julp 7 juillet 2020 à 19:58:39

                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 juillet 2020 à 23:43:02

                    Bonsoir,

                    Ca marche ...

                    Mais après, il y a encore d'autres erreurs.... On s'entraine sur Wamp, ça fonctionne mais en fait, quand on migre sur un vrai serveur, ça n'a plus rien à voir ....   :(

                    Il y a toute une ribambelle de post sur le forum sur cette erreur là mais je n'en ai pas trouvé qui semble me concerner, j'obtiens cette erreur là pour chacun de mes fichiers:

                    Fatal error: Call to a member function prepare() on null in /var/www/sda/7/7/coupdepouceautisme/educatrice_specialisee_presentation.php on line 234

                    La ligne en question est:

                    $req = $bdd->prepare('INSERT INTO compteur(page_index) VALUES(:page_index)');


                    $bdd est définie avant, le reste de la phrase est logique, la bd existe, la table compteur aussi, le champ page_index aussi, rien de tout cela n'est Null

                    ....

                    Merci

                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 juillet 2020 à 23:58:27

                      Tu peux montrer ton code complet ?

                      Selon l'erreur $bdd n'existe pas ou vaut explicitement NULL.

                      Ta connexion échoue mais ton catch rend la main ? (ie il n'est pas fatal par un die/exit)

                      -
                      Edité par julp 8 juillet 2020 à 0:01:32

                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 juillet 2020 à 7:31:39

                        Bonjour, quand tu posteras ton code complet :) :

                        Merci de colorer votre code à l'aide du bouton Code

                        Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller le code dans la zone prévue.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Pas d'aide concernant le code par MP, le forum est là pour ça :)

                          9 juillet 2020 à 17:11:16

                          Bonjour,

                          Voici;

                          Ma page index.php par exemple:

                          $monfichier = fopen('compteur_index.txt', 'r+');
                          
                          $page_index = fgets($monfichier); // On lit la première ligne (nombre de pages vues)
                          $page_index +=1; // On augmente de 1 ce nombre de pages vues
                          fseek($monfichier, 0); // On remet le curseur au début du fichier
                          fputs($monfichier, $page_index); // On écrit le nouveau nombre de pages vues
                          
                          // 2 : quand on a fini de l'utiliser, on ferme le fichier
                          fclose($monfichier);
                          
                          ?>
                          
                          <?php
                          // On envoie la variable $page_index dans la table "compteur" de la BD "coupdepouceautisme"
                          try
                          {
                              $bdd = new PDO('mysql:host=localhost;dbname=coupdepouceautisme;charset=utf8;port=3306;', 'coupdepouceautisme', '');
                          }
                          catch (Exception $e)
                          {
                                  die('Erreur : ' . $e->getMessage());
                          }
                          //    $bdd = new PDO('mysql:host=sql.free.fr;dbname=compteur;charset=utf8;port=3306;', 'coupdepouceautisme', '');
                          
                          $req = $bdd->prepare('INSERT INTO compteur(page_index) VALUES(:page_index)');
                          $req->execute(array(
                              'page_index' => $page_index
                              ));
                          ?>

                          Patrick

                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 juillet 2020 à 17:29:34

                            Avec ce code, tu as une Call to a member function prepare() on null ? Ca me paraît impossible.

                            Mais il manque un bout du code (il manque au moins la balise de début de code) et ton DSN n'est pas bon, parce que tu devrais avoir sql.free.fr en host me semble-t-il.

                            PS : au lieu de t'"amuser" à (dé)commenter ta connexion en fonction de si tu es en local ou non, tu dois pouvoir faire un truc comme ça :

                            if ($_SERVER['HTTP_HOST'] == 'localhost') {
                                $bdd = new PDO('mysql:host=localhost;dbname=coupdepouceautisme;charset=utf8;port=3306;', 'coupdepouceautisme', '');
                            } else {
                                $bdd = new PDO('mysql:host=sql.free.fr;dbname=compteur;charset=utf8;port=3306;', 'coupdepouceautisme', '');
                            }
                            

                            (voir mieux en rendant que les paramètres de connexion conditionnels)

                            -
                            Edité par julp 9 juillet 2020 à 17:46:12

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Migration BD MySQL vers Free

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown