Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment activer PHP sur un Arduino Yun?

Sujet résolu
    26 avril 2020 à 21:50:18

    Bonjour,

    Les commandes php de ma page index.html qui se trouvent sur la carte sd ne sont pas interprétées :elles s'affichent en toute lettre (exemple "echo "bonjour";" ).

    Du coup j'ai installé le package php à l'aide de puTTY:

    • opkg update
      opkg install php7 php7-cgi

    mais les commandes php ne sont tjs pas interprétées mais maintenant les lignes de commande ne s'affichent plus. Par exemple:

    <?
    phpinfo();
    ?>

    n'affiche rien.

    Comment remédier à ce problème selon vous?

    Merci

    -
    Edité par PierreAndrou 26 avril 2020 à 21:53:21

    • Partager sur Facebook
    • Partager sur Twitter
      Staff 27 avril 2020 à 12:39:25

      Il te faut encore configurer le serveur HTTP de ta carte pour qu'il exécute PHP sur les fichiers .php plutôt que de simplement les envoyer au navigateur sans les interpréter.

      http://www.ibuyopenwrt.com/index.php/8-yun-compatible/128-php-and-uhttpd

      • Partager sur Facebook
      • Partager sur Twitter
        27 avril 2020 à 21:45:21

        Bonsoir et merci pour ces explications,
        J'ai vu ce tuto mais quand on saisit : "nano /etc/config/uhttpd" -> message d'erreur car nano n'est pas installé.

        Il faut utiliser vi ("vi /etc/config/uhttpd") et ajouter au fichier uhttpd:

        • list interpreter '.php=/usr/bin/php-cgi'
        • option index_page 'index.php'

        Tout est expliqué ici: https://docs.onion.io/omega2-docs/installing-and-using-php.html

        Merci,

        Sujet résolu

        -
        Edité par PierreAndrou 28 avril 2020 à 3:08:48

        • Partager sur Facebook
        • Partager sur Twitter
          Staff 28 avril 2020 à 8:06:12

          nano est un éditeur de fichier text, tout comme vi, vim ou encore emacs, libre à toi d'utiliser celui que tu préfères.

          Si il n'est pas installé, tu peux l'installer avec la commande apt-get install nano

          • Partager sur Facebook
          • Partager sur Twitter
            28 avril 2020 à 13:41:24

            Merci pour cette nouvelle précision.

            Ta précédente m'a permis de me mettre sur la bonne voie.

            Je viens d'essayer "apt-get install nano" mais j'obtiens le message d'erreur: -ash: apt-get: not found

            • Partager sur Facebook
            • Partager sur Twitter
              Staff 28 avril 2020 à 21:16:42

              Ah? Il est possible que la distribution Linux de la Yun n'utilise pas le gestionnaire de packet apt.

              D'après cet article, pourrais essayer opkg install nano

              -
              Edité par lorrio 28 avril 2020 à 21:17:12

              • Partager sur Facebook
              • Partager sur Twitter
                29 avril 2020 à 22:58:15

                Merci. Bravo c'est ça.

                Entre temps j'ai compris qu'il fallait que je trouve les commandes compatibles avec OpenWrt que j'utilise comme console pour paramétrer linux.

                Je profite de tes connaissances pour autre chose:

                j'ai installé php et mysql serveur (sur le yun à l'aide de OpenWrt) et j'essaie d'accéder à ma base données avec MSQL Worbench (phpmayadmin est trop compliqué à installer). Mais je ne parviens pas à le paramétrer car je ne sais quelle IP rentrer, celle du serveur, (celle de l'IP du Yun, du wifi émis par le yun, localhot, ?) et pas le port non plus.

                • "ping 4" -> "127.0.0.1" mais avec ports 22, 80 cela ne marche pas
                • netstat n ->

                                     tcp        0      0 Arduino.lan:www         DESKTOP-GS1BJ35.lan:53223 ESTABLISHED
                                     tcp        0    304 Arduino.lan:ssh         DESKTOP-GS1BJ35.lan:53439 ESTABLISHED

                • ifconfig ->

                                      lo:   inet addr:127.0.0.1  Mask:255.0.0.0 
                                      wlan0 : inet addr:192.168.240.1  Bcast:192.168.240.255  Mask:255.255.255.0

                Merci

                -
                Edité par PierreAndrou 30 avril 2020 à 0:35:30

                • Partager sur Facebook
                • Partager sur Twitter
                  Staff 30 avril 2020 à 23:50:33

                  L'addresse IP local host 127.0.0.1 correspond à soit même.

                  En quelque sorte, si tu tapes ping 127.0.0.1 dans le terminal de la Yun, elle va se pinguer elle même.

                  Et si tu tapes ping 127.0.0.1 dans le terminal windows de ton PC, il va se pinguer lui même.

                  Ton serveur PHP étant sur la YUN, si tes scripts PHP veulent se connecter au serveur SQL de la YUN, il peuvent utiliser l'adresse 127.0.0.1 (étant donné qu'ils sont exécuté par la YUN, le fait de se connecter à soit même va établir une connexion avec la YUN).

                  En revanche, pour ce qui concerne ton outils d'administration MSQL Worbench, je suppose qu'il s'agit d'un utilitaire que tu utilises sur ton PC.

                  Dans ce cas de figure, tu ne peux pas utiliser l'adresse 127.0.0.1 car celui-ci étant exécuté sur ton PC, si il se connecte à lui même, cela va établir une connexion sur ton PC et non sur ta YUN.

                  Il te faudra alors utiliser l'adresse IP wlan 192.168.240.1 à condition bien sûre que ton PC soit connecté sur le même réseau Wifi que ta YUN (ton PC devrait donc avoir une adresse IP du genre 192.168.240.xxx)

                  Il te faudra aussi vérifier que le serveur SQL de ta YUN accepte les connexions en provenance de l’extérieur et non uniquement les connexions localhost (pour des raisons de sécurité et éviter que n'importe qui puisse tenter de se connecter en essayant différents mots de passe, je ne serais pas surpris que le serveur SQL refuse les connexions externes par défaut de façon à ce que seul les scripts locaux puissent s'y connecter).

                  Quand aux ports, MySQL utilise le port 3306 par défaut.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 mai 2020 à 13:57:40

                    Bonjour et merci.

                    J'ai passé environ 3 jours sur le sujet.

                    Pas moyen de me connecter au serveur à l'aide de l'IDE ou de logiciels tels que Mysql Worbench, Heidysql, Dbeaver. Ce que j'ai réussi à faire qd même:

                    • connecter en ftp à l'aide de ssh (Filezilla et WinSCP) : clé privée que j'ai déposée sur Luci (fenetre de paramétrage du yun).
                    • J'envoie des commandes mysql à l'aide Putty et gère une base de donnée depuis le http en m'adressant à "127.0.0.1" en utilisant les commandes mysql classiques.

                    J'ai tenté d'utiliser ce script pour surveiller un port à une adresse IP. Il indique que le port est "Prêt!" mais en utilisant l'IP et le port indiqué impossible de me connecter:

                    // Ces deux bibliothèques sont indispensables pour le shield
                    #include <SPI.h>
                    #include <Ethernet.h>
                    
                    // L'adresse MAC du shield
                    byte mac[] = {0x34, 0xf6, 0x4b, 0x96, 0x0f, 0x32  };   
                    IPAddress ip(192,168,1,59);
                    
                    // Initialise notre serveur
                    // Ce dernier écoutera sur le port 4200
                    EthernetServer serveur(4200);
                    
                    void setup()
                    {
                      // On démarre la voie série pour déboguer
                      Serial.begin(9600);
                    
                      char erreur = 0;
                      // On démarre le shield Ethernet SANS adresse IP (donc donnée via DHCP)
                      erreur = Ethernet.begin(mac);
                    
                      if (erreur == 0) {
                        Serial.println("Parametrage avec ip fixe...");
                        // si une erreur a eu lieu cela signifie que l'attribution DHCP
                        // ne fonctionne pas. On initialise donc en forçant une IP
                        Ethernet.begin(mac, ip);
                      }
                      Serial.println("Init...");
                      // Donne une seconde au shield pour s'initialiser
                      delay(1000);
                      // On lance le serveur
                      serveur.begin();
                      Serial.print("Pret !");
                    }
                    
                    void loop()
                    {
                      // Regarde si un client est connecté et attend une réponse
                      EthernetClient client = serveur.available();
                      if (client) {
                        // Quelqu'un est connecté !
                        Serial.print("On envoi !");
                        // On fait notre en-tête
                        // Tout d'abord le code de réponse 200 = réussite
                        client.println("HTTP/1.1 200 OK");
                        // Puis le type mime du contenu renvoyé, du json
                        client.println("Content-Type: application/json");
                        // Et c'est tout !
                        // On envoie une ligne vide pour signaler la fin du header
                        client.println();
                    
                        // Puis on commence notre JSON par une accolade ouvrante
                        client.println("{");
                        // On envoie la première clé : "uptime"
                        client.print("\t\"uptime (ms)\": ");
                        // Puis la valeur de l'uptime
                        client.print(millis());
                        //Une petite virgule pour séparer les deux clés
                        client.println(",");
                        // Et on envoie la seconde nommée "analog 0"
                        client.print("\t\"analog 0\": ");
                        client.println(analogRead(A0));
                        // Et enfin on termine notre JSON par une accolade fermante
                        client.println("}");
                        // Donne le temps au client de prendre les données
                        delay(10);
                        // Ferme la connexion avec le client
                        client.stop();
                      }
                    }


                    *J'ai lu et relu la configurant du yun à l'aide de Lui. J'ai utilisé tour à tour les adresses IP qui s'y trouvent:

                    • IPv4 WAN Status :: 192.168.1.56

                    • DHCPv6 Leases :: 192.168.240.248
                    • LAN :: IPv4: 192.168.240.1/24

                    Comme "127.0.0.1" fonctionne qd j'accède à ma bdd ($link = mysqli_connect($host,$user,$pass,$bdd);) ou $host = "localhost"), j'ai essayé de mettre 127.0.0.1 sur le logiciel IDE et les logiciels de gestion de bdd mais rien n'y fait (pour ces dernier le ssh ne fonctionne pas non plus.

                    PS: j'ai fait les manip en désactivant mon firewall et apparemment le firewall du yun accepter les entrée et les sorties (vu via Luci).

                    Auriez vous une idée?

                    Merci et bon dimanche.

                    -
                    Edité par PierreAndrou 3 mai 2020 à 15:42:00

                    • Partager sur Facebook
                    • Partager sur Twitter
                      Staff 4 mai 2020 à 8:14:18

                      Comme je te l'ai dis plus haut, l'adresse 127.0.0.1 correspond à soit même, donc tu ne peux pas utiliser cette adresse sur un logiciel de ton PC mais uniquement sur des scripts présent dans ta YUN.

                      Pour te connecter à MySQL depuis ton PC, il te faut utiliser l'adresse IP LAN, ou WAN et il faut que ton PC soit sur le même réseau local que ta YUN.

                      Il te faut utiliser la même adresse IP que celle que tu utilises sur WinSCP ou Filezilla.

                      Et comme dit plus haut, il faut aussi configurer mysql pour qu'il accepte les connexions extérieurs et non uniquement les connexions internes localhost.

                      Cela se passe dans le fichier /etc/mysql/my.cnf dans lequel il faut remplacer bind-address = 127.0.0.1 par bind-address = 0.0.0.0

                      -
                      Edité par lorrio 4 mai 2020 à 8:15:21

                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 mai 2020 à 15:12:00

                        Merci.

                        Sachant déjà tout cela, j'ai abandonné le Yun et pris un uno+shield ethernet.

                        Et là du 1er coup j'ai pu lui affecter une adresse IP et un port depuis un sketch (avec le yun ce n'était pas possible, j'ai essayé ne multiples fois, en DHCP ou non). Donc qq chose bloque au niveau du yun, mais je ne sais pas où.

                        #include <SPI.h>
                        #include <Ethernet.h>
                        
                        // Enter a MAC address and IP address for your controller below.
                        // The IP address will be dependent on your local network:
                        byte mac[] = {
                          0xDE, 0xAK, 0xBE, 0xEM, 0xFE, 0xEH
                        };
                        IPAddress ip(192, 168, 1, 177);
                        
                        // Initialize the Ethernet server library
                        // with the IP address and port you want to use
                        // (port 80 is default for HTTP):
                        EthernetServer server(80);
                        .....


                        Ps: pour information, sur la carte shield ethernet (du uno) l'adresse mac est indiqué avec une étiquette

                        -
                        Edité par PierreAndrou 8 mai 2020 à 15:18:15

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Comment activer PHP sur un Arduino Yun?

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        • Editeur
                        • Markdown