Récupérer un argument passé en shell_exec dans un fichier js

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 7 Octobre 2018.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Bonjour,

    je me permet de vous solliciter car j'ai un petit soucis. En effet lors de l’exécution d'une commande shell je souhaite rajouter quelques arguments à la ligne de commande, mais je ne sais pas comment récupérer ces arguments dans le fichier js appelé pour m'en servir.

    Voici le code php :

    PHP:
    <?php
     
    $result 
    shell_exec('cheminversfichierjs test.js argument1 argument2');
     
    ?>
    Merci de votre aide
     
  2. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 062
    J'aime reçus:
    108
    Déjà ça m'étonnerait qu'exécuter un fichier js puisse se faire comme ça.
     
  3. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 733
    J'aime reçus:
    233
  4. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Merci

    par contre ce qui est étonnant c'est que ma ligne shell dans mon fichier php ne fonctionne absolument pas et pourtant le chemin est bien correct.

    Voici la ligne :

    Code:
    shell_exec('node /var/www/html/test7.js argument'); 
    Dans PuTTY

    Cela fonctionne :
    root@vps-37795:/var/www/html# node test7.js argument

    Je ne comprends ce qui pose problème.
     
  5. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 733
    J'aime reçus:
    233
    Définir "ne fonctionne absolument pas" ? Erreur ? Retour shell_exec null ?
     
  6. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    En fait ca ne me retourne rien. La page est blanche.
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 733
    J'aime reçus:
    233
    C'est tjs pas clair.
    Page blanche = erreur 500 ou le retour de shell_exec est NULL (var_dump est ton ami) ?
     
  8. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    var_dump me retourne ceci : string(1) " "
     
  9. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Je comprends pas. J'ai tout essayé ce ne fonctionne toujours pas.

    Voici le code JS (test7.js)

    Code:
        const request = require('../../../root/node_modules/request');
        
        const args = process.argv;
    
        var self = this;
        return new Promise(
        
        
        function(resolve, reject) {
            request.get({
                
    uri: "https://api.leboncoin.fr/finder/classified/" + process.argv[2],
                
                
    headers: {
                    "origin": "https://www.leboncoin.fr",
                    "api_key": "ba0c2dad52b3ec",
                    "content-type": "text/plain;charset=UTF-8",
                    "accept": "*/*",
                    "referer": "https://www.leboncoin.fr/annonces/offres/ile_de_france/",
                }
            }, function (err, res) {
                if(err) {
                    return reject(err);
    
                }
                var entry = JSON.parse(res.body);
    
                var price = entry.price ;
    
                if(entry.price != null){ //SI ANNONCE ENCORE ACTIVE
                    
                    var XMLHttpRequest = require("/root/node_modules/xmlhttprequest").XMLHttpRequest;
    
                    xhr = new XMLHttpRequest()
                    xhr.open("POST", "/traitement2.php", true)
                    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    xhr.send("var="+process.argv[2]);
                }
    
                console.log(price);
    
            });
        });


    Code php :

    PHP:
    $out shell_exec('node /var/www/html/test7.js 1491910691').PHP_EOL;
    var_dump($out);
    Sachant qu'en passant par PuTTY cette ligne de commande fonctionne parfaitement :

    root@vps-37795:/var/www/html# node test7.js 1491910691

    Je ne vois pas d'ou vient le problème. Pour info var_dump retourne constamment :string(1) " "
     
  10. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Si je modifie le fichier test7.js comme ceci :

    Code:
        const request = require('/root/node_modules/request');
        
        const args = process.argv;
        
        console.log(process.argv[2]);
    le var_dump me renvoi toujours string(1) " "

    Mais si je le modifie comme ceci j'ai un retour.

    Code:
        const args = process.argv;
        
        console.log(process.argv[2]);
    En quoi le premier const pose problème ?
     
  11. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 733
    J'aime reçus:
    233
    Il ne faut pas indiquer le path : https://github.com/request/request
    Et puis avant de l'appeler en PHP, il faut réussir à le faire fonctionner sans, les erreurs seront affichées en clair dans la console.
     
  12. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    le problème c'est que si je ne met pas le path, j'ai une erreur dans la console :

    Error: Cannot find module 'request'

    pour information test7.js se trouve dans : /var/www/html
     
  13. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Quand c'est pas request qui déconne c'est le shell_php :

    Code php :

    PHP:
    $out shell_exec('node /root/test/test7.js 1491910691 2>&1');
    var_dump($out);
    Voici ce que cela me donne :

    string(324) "module.js:550 throw err; ^ Error: Cannot find module '/root/test/test7.js' at Function.Module._resolveFilename (module.js:548:15) at Function.Module._load (module.js:475:25) at Function.Module.runMain (module.js:694:10) at startup (bootstrap_node.js:204:16) at bootstrap_node.js:625:3 "

    Pourant une nouvelle fois dans la console PuTTY cette ligne fonctionne parfaitement : node /root/test/test7.js 1491910691

    Je ne comprends pas le problème, comment ne trouve t-il pas le module alors que le chemin est correct ?

    Je précise que le shell_exec se trouve dans : /var/www/html/traitement.php
     
  14. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 733
    J'aime reçus:
    233
    Ton script traitement.php n'a probablement pas accès à /root/test/test7.js vu que PHP ne tourne pas en root (par défaut du moins).
     
  15. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Non en effet, les 2 chemins sont totalement différent. Il y a pas une solution pour palier à ce problème et faire en sorte que l'accès soit possible ?
     
  16. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 733
    J'aime reçus:
    233
    Met le script JS adjacent au script PHP.
     
  17. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Dans ce cas c'est le script JS qui pose problème car il n'a plus accès à request :

    Cette ligne ne fonctionne pas :
    const request = require('/root/node_modules/request');

    Toujours un problème d'accès à root meme si je met le script JS dans /var/www/
     
  18. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 733
    J'aime reçus:
    233
    Ben oui, "node_modules" doit être dans le répertoire courant.
    Comme qd tu as fait le npm install request depuis /root/.

    Donc met toi dans le répertoire du script PHP, et refait le npm install request.
     
  19. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Ok je m'en doutais. Merci
     
Chargement...
Similar Threads - Récupérer argument passé Forum Date
SELECT COUNT avec PDO et récupérer le résultat Développement d'un site Web ou d'une appli mobile 27 Mai 2019
récupérer id en php sans lien Développement d'un site Web ou d'une appli mobile 25 Avril 2019
Récupérer events via API google analytics Google Analytics 6 Avril 2019
Récupérer un numéro d'un paragraphe Développement d'un site Web ou d'une appli mobile 13 Décembre 2018
Logiciel ou script gratuit ou payant pour récupérer les mots clés !! Rédaction web et référencement 5 Juillet 2018
recupérer la balise title d'en bas Développement d'un site Web ou d'une appli mobile 16 Février 2018
Comment récupérer des chaines de caractères dans une variable ? Développement d'un site Web ou d'une appli mobile 3 Mai 2017
Comment récupérer proprement le contenu de la balise TITLE d'une page ? Développement d'un site Web ou d'une appli mobile 22 Avril 2017
Récupérer pages d'un site supprimé Débuter en référencement 13 Avril 2017
Récupérer tous les champs d'un select et les marquer "selected" Développement d'un site Web ou d'une appli mobile 22 Mars 2017
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice