[RESOLU] [php]execute un programme externe et attand sa fin

Eléphanteau du PHP | 13 Messages

11 avr. 2015, 19:14

j'ai essayé avec ce scripte :
echo "tache reported\n";
$cmd="java -jar seqmaker_web.jar ./cuckoo/storage/analyses/latest/reports/report.json";
$out=system($cmd,$return_val);
echo $out;
echo "return val :$return_val";
et avec ça :

$cmd="java -jar seqmaker_web.jar ./cuckoo/storage/analyses/latest/reports/report.json";
exec($cmd,$out,$return_val);
print_r($out);
echo "\n $return_val";

Avatar du membre
Mammouth du PHP | 1609 Messages

11 avr. 2015, 19:44

De ce que tu dis j'imagine que le java plante à un moment donné, ou qu'il a fait ce qu'il avait à faire selon son algorithme.

Tu peux tester ça dans le terminal pour voir ce qu'il se passe (l'idée est d'exécuter ta commande avec le user www-data), je sais pas si la commande est bonne j'ai jamais testé :
sudo -H -u www-data bash -c 'java -jar seqmaker_web.jar ./cuckoo/storage/analyses/latest/reports/report.json'

Si ça fonctionne comme ça peut être un module apache qui limite le temps d'exécution des fonctions d'exécution ? (je sais pas si ça existe)
Si ça ne fonctionne pas ça tendrait à prouver qu'il y a bien un problème lié à l'utilisateur www-data...

PS : j'imagine que tu as testé ta commande direct dans le terminal et que ça fonctionne ?
java -jar seqmaker_web.jar ./cuckoo/storage/analyses/latest/reports/report.json
(à priori oui si la commande php tonscript.php fonctionne)

Et comme je te disais tu as 3 fichiers arf en -rw--w--w-, il suffit que le java essaie de lire un de ces fichiers et c'est le plantage (ou l'arrêt du programme java selon comment c'est codé).
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 13 Messages

11 avr. 2015, 20:27

De ce que tu dis j'imagine que le java plante à un moment donné, ou qu'il a fait ce qu'il avait à faire selon son algorithme.

Tu peux tester ça dans le terminal pour voir ce qu'il se passe (l'idée est d'exécuter ta commande avec le user www-data), je sais pas si la commande est bonne j'ai jamais testé :
sudo -H -u www-data bash -c 'java -jar seqmaker_web.jar ./cuckoo/storage/analyses/latest/reports/report.json'

Si ça fonctionne comme ça peut être un module apache qui limite le temps d'exécution des fonctions d'exécution ? (je sais pas si ça existe)
Si ça ne fonctionne pas ça tendrait à prouver qu'il y a bien un problème lié à l'utilisateur www-data...

PS : j'imagine que tu as testé ta commande direct dans le terminal et que ça fonctionne ?
java -jar seqmaker_web.jar ./cuckoo/storage/analyses/latest/reports/report.json
(à priori oui si la commande php tonscript.php fonctionne)

Et comme je te disais tu as 3 fichiers arf en -rw--w--w-, il suffit que le java essaie de lire un de ces fichiers et c'est le plantage (ou l'arrêt du programme java selon comment c'est codé).
je vais essayer maintenant

Eléphanteau du PHP | 13 Messages

11 avr. 2015, 20:56

Je l'ai testé avec l'utilisateur www-data (sudo -H -u www-data php test_exec.php). le scripte et le programme travaillera également jusqu'a la fin voisi le resultat :

Array
(
[0] => close uniq pat
[1] => critaire Criteres_Iterative_patterns loaded
[2] => critaire weka_file_proto_Iterative_patterns loaded
[3] => fin CloseUniqPatTsetFile
[4] => start ngram_arff_file
[5] => la sequance num et genre a partire de rapport json
[6] => api-report.txt
[7] => le fichier ngrams et genere
[8] => java.io.FileNotFoundException: ./n-gram/kfngram/api-report.txt-04-ngrams-Freq.txt (No such file or directory)
[9] => reading ngrams
[10] => la sortie et dans :
[11] => /n-gram/arff_files/
[12] => start arg_ret_arff_file
[13] => nombre de api_arf_ret :2114
[14] => la sortie et dans :
[15] => /arg_ret_task_arff/
[16] => =================================================================================================
[17] =>
[18] => N-grams method:
[19] => ==============
[20] => === Summary ===
[21] =>
[22] => Correctly Classified Instances 0 0 %
[23] => Incorrectly Classified Instances 1 100 %
[24] => Kappa statistic 0
[25] => Mean absolute error 1
[26] => Root mean squared error 1
[27] => Relative absolute error 267.9012 %
[28] => Root relative squared error 267.9012 %
[29] => Coverage of cases (0.95 level) 0 %
[30] => Mean rel. region size (0.95 level) 50 %
[31] => Total Number of Instances 1
[32] => Predications :
[33] => ==============
[34] => Pb.malware Pb.begnin
[35] => 0.0% 100.0%
[36] => =================================================================================================
[37] =>
[38] => Iterative_patterns method:
[39] => =====================
[40] => === Summary ===
[41] =>
[42] => Correctly Classified Instances 0 0 %
[43] => Incorrectly Classified Instances 1 100 %
[44] => Kappa statistic 0
[45] => Mean absolute error 0.9333
[46] => Root mean squared error 0.9333
[47] => Relative absolute error 249.9484 %
[48] => Root relative squared error 249.9484 %
[49] => Coverage of cases (0.95 level) 100 %
[50] => Mean rel. region size (0.95 level) 100 %
[51] => Total Number of Instances 1
[52] => Predications :
[53] => ==============
[54] => Pb.malware Pb.begnin
[55] => 6.666667% 93.333336%
[56] => =================================================================================================
[57] =>
[58] => api_arg_ret method:
[59] => =================
[60] => === Summary ===
[61] =>
[62] => Correctly Classified Instances 0 0 %
[63] => Incorrectly Classified Instances 1 100 %
[64] => Kappa statistic 0
[65] => Mean absolute error 1
[66] => Root mean squared error 1
[67] => Relative absolute error 267.9012 %
[68] => Root relative squared error 267.9012 %
[69] => Coverage of cases (0.95 level) 0 %
[70] => Mean rel. region size (0.95 level) 50 %
[71] => Total Number of Instances 1
[72] => Predications :
[73] => ==============
[74] => Pb.malware Pb.begnin
[75] => 0.0% 100.0%
[76] => =================================================================================================
[77] =>
)

return val: 0
le programme java est un programme de classification des malwr c'est mon travaille :) :)
donc le problème n'est pas un problème des droits d'acces
Modifié en dernier par raouf-bnj le 11 avr. 2015, 21:18, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 avr. 2015, 21:17

Reste les logs (dans le cas non passant) :mrgreen: :mrgreen: :mrgreen:
Il en faut peu pour être heureux ......

Avatar du membre
Mammouth du PHP | 1609 Messages

11 avr. 2015, 22:12

Bizarre, ça fonctionne avec le user d'apache en ligne de commande mais pas via le serveur...
A part un truc qui bloquerait par rapport à la configuration d'apache, ou à la configuration php d'apache (y a un php.ini pour la ligne de commande et un pour apache), je vois pas et la comme ça j'ai pas la moindre idée de ce que ça pourrait être.

T'as regardé si y a quelque chose dans le log d'apache ?

Sinon pas le choix va falloir que tu debug le java pendant qu'il s'exécute via apache.

Ah et je viens de voir ça dans la doc :
Note: Lorsque le safe mode est activé, vous pouvez uniquement exécuter des programmes qui se situent dans le dossier défini par safe_mode_exec_dir. Pour des raisons pratiques, il n'est actuellement pas permis d''avoir le composant .. dans le chemin de l'exécutable.
http://php.net/manual/fr/function.exec.php
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 13 Messages

12 avr. 2015, 13:02

le safe mode n'est pas active dans mon fichier php.ini j'ai deja vérifier ça

Eléphanteau du PHP | 13 Messages

12 avr. 2015, 15:08

j'ai trouvé le problème en realite vous avez raison le probleme et au niveau de programme php tué le pgramme lorsque une exception et produit donc le programme il s'arrête aprer cette exception java java.io.FileNotFoundException: ./n-gram/kfngram/api-report.txt-04-ngrams-Freq.txt (No such file or directory)
j'ai réglé le problème au niveau de mon programme et ca marche
merci merci : :D :D :D :D :wink: