IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Android et PHP


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Android et PHP
    Bonjour,

    Je suis actuellement en stage et je travaille sur un site web en php qui doit générer des applications mobiles en java. Mon problème : impossible d'exécuter des commandes android depuis PHP. Ce bout de code provient de mon controller.php.

    putenv("ANDROID_SDK_ROOT=/opt/android-sdk-19.0");

    putenv("PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools");

    putenv("PATH=$PATH:$ANDROID_SDK_ROOT/tools");

    //shell_exec("cd genarate/$appid/$appname/src;mkdir natacha");

    $cmd="android update project --target 1 --name Myproject --path ./genarate/$appid/$appname";

    shell_exec($cmd);




    C'est étrange car cette commande //shell_exec("cd genarate/$appid/$appname/src;mkdir natacha");
    créer bien "natacha". De plus, depuis le terminal ma commande android update fonctionne.

    Pour essayer de résoudre mon problème j'ai créer un script bash et qui est appelé depuis controller.php:
    #!/bin/bash

    date > /tmp/last.jnk

    echo"Hello le monde">> /tmp/last.jnk

    date >> /tmp/last.jnk

    echo"goodbye">> /tmp/last.jnk

    env >> /tmp/last.jnk

    env| grep ANDROID >> /tmp/last.jnk



    J'obtiens :


    [natacha@call1669 geodiva]$ cat /tmp/last.jnk

    Hello le monde
    goodbye



    Des idées svp? Merci d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Est-ce que c'est une application CLI? À y réflechir comme ça (mais sans certitude), je ne suis pas sûr qu'utiliser putenv() en mode serveur (CGI/php-fpm etc...) modifie les variables utilisables par android.

    Mets le code dans un script CLI, un fichier exécutable avec un shebang #!/usr/bin/php, puis exécute ce fichier depuis ton controlleur.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci pour votre réponse. Non, ce n'est pas une application CLI. J'ai quand même fais ce que vous m'avez proposé et ça ne fonctionne pas

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Et si tu lances le script CLI directement depuis la console? Le script CLI doit contenir non seulement les putenv, mais aussi shell_exec.

    Autre solution: fais un script bash pour définir les variables d'environnement, puis lancer ce script et exécuter android update depuis le script PHP.

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 220
    Points : 15 511
    Points
    15 511
    Par défaut
    essayez de mettre un chemin absolu pour l'exécutable android

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci à vous deux le problème est partiellement réglé. Maintenant j'ai ce message d'erreur :

    Error occurred during initialization of VM
    Could not reserve enough space for code cache

    C'est étrange car si je lance la même commande depuis le terminal, et non depuis le script php, tout fonctionne...

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Est-ce que tu peux poster la solution que tu as utilisée pour régler le précédent problème? La réponse à la 2e question dépend (peut-être) de la première.

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    La voici:

    #!/bin/bash
    export android=/opt/android-sdk-19.0/
    export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools
    export PATH=$PATH:$ANDROID_SDK_ROOT/tools
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/android-sdk-19.0/platform-tools:/opt/android-sdk-19.0/tools:/home/natacha/bin
    export ANDROID_SWT=/opt/android-sdk-19.0/tools/lib/x86_64/
    env | grep android > /tmp/last.jnk
    android list targets >> /tmp/last.jnk


    Lorsque je rajoute cette ligne : export _JAVA_OPTIONS=/usr/bin/java => le message d'erreur disparaît mais il ne se passe rien.

  9. #9
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 220
    Points : 15 511
    Points
    15 511
    Par défaut
    quand rien ne s'affiche, il faut faire comme pour n'importe quel langage de développement : afficher le contenu de variables ou n'importe quel texte, ligne après ligne, pour trouver à quel endroit est le problème

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Possible idée: android update épuise la mémoire alloué par PHP lorsqu'il est appelé depuis un script php.

    Au lieu de shell_exec, utilise system.

Discussions similaires

  1. Communication entre android et php
    Par feriela dans le forum Android
    Réponses: 3
    Dernier message: 18/04/2013, 10h15
  2. Connexion Android et PHP
    Par leila22 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/05/2012, 16h59
  3. Developper sous Android avec PHP
    Par QAYS dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2011, 12h26
  4. Android MySql PHP
    Par abablex dans le forum Android
    Réponses: 7
    Dernier message: 28/05/2011, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo