Lancer un script Python depuis PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Lancer un script Python depuis PHP

Re: Lancer un script Python depuis PHP

par AntoineG69 » 03 mai 2021, 14:53

Je viens de faire le test ça ne remonte pas.

Je ne sais pas regarder pour les permissions désolé

Re: Lancer un script Python depuis PHP

par @rthur » 03 mai 2021, 14:33

Fais un test avec un script python tout simple qui fait juste un hello world pour voir si ça remonte bien dans PHP.
Tu peux aussi vérifier dans les logs (via l'Observateur d’événements de Windows) que tu n'aies pas de problème de permissions ou autres erreurs

Re: Lancer un script Python depuis PHP

par AntoineG69 » 03 mai 2021, 11:54

C'est vraiment bizarre car mon script python :
- ne fonctionne pas depuis mon bouton
- mais fonctionne quand je le lance des fichiers (normalement)

Et j'ai fait exprès de faire pour qu'il retourne des éléments pour qu'ils s'affiches. Du coup il n'y a pas d'erreur, mais ça fait comme si rien ne fonctionné

Re: Lancer un script Python depuis PHP

par @rthur » 03 mai 2021, 11:23

Du coup ton script python a normalement été exécuté mais n'a rien retourné.
Si PHP n'avait pas réussi à exécuter python il aurait retourné false au premier var_dump()

Re: Lancer un script Python depuis PHP

par AntoineG69 » 03 mai 2021, 10:24

C:\wamp64\www\Course\index.php:44:string '' (length=0)
C:\wamp64\www\Course\index.php:46:
array (size=0)
  empty
Voila ce qu'il m'affiche

Re: Lancer un script Python depuis PHP

par @rthur » 03 mai 2021, 08:32

Ceci étant dit, commence par uniquement faire un simple script PHP et quand tu l'appelles dans ton navigateur directement exécute ton script python.
Et vois déjà si ça fonctionne.
Du coup supprime ton if() et dis nous ce que les var_dump() t'affiche à l'écran :)

Re: Lancer un script Python depuis PHP

par AntoineG69 » 02 mai 2021, 09:18

Merci pour cette explication très clair .
je vous fais confiance et suis la solution 1 effectivement je suis débutant.
Ça ne fonctionne pas pour moi je ne sais pas où j'ai pu me tromper, je vous mets mon code php :
if(isset($_POST["bouton"])){

                $comand = 'C:\\wamp64\\www\\Course\\Python_code\\creation_des_menu.py';
                $python = 'C:\\Users\\*****\\AppData\\Local\\Programs\\Python\\Python38-32\\python.exe';

                var_dump(exec("$python $comand", $output));

                var_dump($output); 

            }
ça ne lance pas le code. En tout cas les changement ne sont pas fait.

Pour votre question subsidiaire , effectivement ça serait à refaire je le ferai en PHP, ça n'a aucun sens de le faire en python. mais dans la suite de mon projet je vais devoir refaire cette manip. C'est pour ça que je ne « converti » pas mon code python en php.

Re: Lancer un script Python depuis PHP

par @rthur » 01 mai 2021, 13:15

(Note aux experts : je simplifie pour être compréhensible)

Il faut revoir les bases de PHP pour comprendre un principe fondamental :
PHP s'exécute côté serveur pour faire un traitement et générer du HTML qui va ensuite être lu par le navigateur.
C'est la grande différence avec Javascript qui ne s'exécute que côté navigateur.

Par conséquent, tu ne peux jamais avoir du code PHP dans un onclick mais uniquement du javascript, puisque lorsque tu affiches ta page et donc ton formulaire PHP s'est déjà exécuté....

2 solutions :
- soit ton bouton va envoyer ton formulaire et donc charger une autre page, qui elle va exécuter ton code PHP.
- soit, c'est un peu plus complexe, tu gardes la logique du onclick pour demander en javascript à aller appeler ton script PHP.

Ma recommandation est de faire la 1ère option vu que tu es débutant, car pour la 2ème ça t'oblige à gérer javascript en + de PHP, et notamment à gérer en JS l'affichage du résultat du traitement.


Ceci étant dit, commence par uniquement faire un simple script PHP et quand tu l'appelles dans ton navigateur directement exécute ton script python.
Et vois déjà si ça fonctionne.
Un point important à noter aussi : L'antislash est considéré comme un caractère d'échappement, donc il faut que tu le doubles pour tes chemins

$pyscript = 'C:\\wamp64\\www\\Course\\creation_des_menu.py';
$python = 'C:\\Python27\\python.exe'; // A VERIFIER QUE C'EST BIEN LE CHEMIN VERS TON PYTHON.EXE

var_dump(exec("$python $pyscript", $output));
var_dump($output);
Et enfin une question subsidiaire, as-tu vraiment besoin de python pour faire ton traitement ?
Car si c'est pour gérer une bdd, il vaut mieux le faire en PHP plutôt que de mixer les langages de programmation

Lancer un script Python depuis PHP

par AntoineG69 » 01 mai 2021, 08:02

Bonjour,

ça fait 2/3 jours que je galère sur ce sujet, alors j'ai décidé de poser ma question, j'espère quelle seras pertinente.

Je suis débutant en php. Et en commençant un projet, j'ai fait un code qui gère ma bdd en python.

Et j'aimerais que ce code python (qui est rangé au m^me endroit que mon code php) s'éxecute au clique d'un bouton.

Après avoir essayé, exec(), sehl_exec(), et j'en passe. Rien ne fonctionne à par que des fois le code python se supprime suite au clique du bouton.

Mon code :

<form action="" method="post">
<button name="bouton" value="1" onclick = <?php exec("python creation_des_menu.py"); ?>>Changer le menu</button>
</form>


<?php

if(isset($_POST["bouton"])){

//exec('python C:\wamp64\www\Course>creation_des_menu.py');
//$command = escapeshellcmd('python C:\wamp64\www\Course\creation_des_menu.py');
//$command =escapeshellcmd("python C:\wamp64\www\Course\creation_des_menu.py");
//exec($command);

$command = shell_exec('python "C:\wamp64\www\Course\creation_des_menu.py" "r"');

//header("Refresh:0");

//include "creation_menu.php";

//header("Refresh:0");

}


je suis sur cette question depuis un moment et j'aurais besoin d'aide merci d'avance.