EDIT : LIRE MON 2EME POST AVANT TOUT. DESOLE !!





Bonjour,

je souhaite executer tout un programme que j'ai écrit en C via php (je souhaite ensuite récuperer ses sorties pour faire une mise a jour d'une base de donnée).

Mais voilà, exec, shell_exec & tout le reste ne marche pas.

J'ai fait un petit diagnostic :

marche

marche, yo étant un programme balourd qui retourne "yo"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo exec("./DigEnz -h"); // censé afficher l'aide
ne marche pas. DigEnz étant ce fameux programme que j'ai codé. Il marche parfaitement en dehors du contexte php et je lui ai mis les pleins droits à l'utilisateur apache ainsi que son groupe.
Quand je dis marche pas, aucune valeure n'est retournée sauf un 1 si je tente de le lancer via system et regarde son 2eme argument.

Du coup j'ai voulu tenter d'executer petit bout par petit bout le contenu de ce DigEnz.
Il utilise une libraire externe nomée acnuc et sans doute que le problème viendrait de là.

Donc dèrière un executable disons yo2.c dont voici la teneur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
#include "dir_acnuc.h"  // ===> la fameuse librairie
#include <stdio.h>
#include <stdlib.h>
#include <search.h>
#include <regex.h>
 
int main(int argc, char **argv) {	
	printf("\nyo\n");
}
que je compile comme il faut ( gcc -o yo2 yo2.c -I/usr/local/acnuc/lib/ -L/usr/local/acnuc/lib/ -lcacnuc) pusiqu'il marche dans un terminal

et bien ça marche

Mais si j'ajoute dans le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
#include "dir_acnuc.h"  // ===> la fameuse librairie
#include <stdio.h>
#include <stdlib.h>
#include <search.h>
#include <regex.h>
 
int main(int argc, char **argv) {	
	acnucopen(); // ===> le coupable
        printf("\nyo\n");
}
qui est une fonction de cette librairie, ça ne marche plus (systeme donne 1 comme valeur de retour et pas de "yo" qui s'affiche).

Normalement cette fonction devrait avoir besoin de 2 variables d'environnement, mais quand je lance dans un terminal ce programme à partir d'un utilisateur pour lequel ces variables ne sont pas définies, le programme affiche quand même yo ...

Est ce que vous comprennez quelque chose?
J'aurais beaucoup de chance de tomber sur un pro du C et du php à la fois qui puisse me répondre mais bon je commence à craquer ça fait pas mal de temps que je trimme dessus.

Merci d'avance, Yan

PS : là je part manger mais dès les 14h30 je répondrais à toutes les questions, même indiscrètes si vous voulez