Bonjour,

Je cherche à lancer un exécutable écrit en C depuis un serveur PHP sous Apache. L'objectif final est d'ajouter un utilisateur depuis l'interface Admin d'un site PHP.

Je suis le principe d'une SOLUTION "EXECUTABLE" décrit dans ce post.

Je ne trouve pas pourquoi cela ne fonctionne pas, et à vrai dire, je ne sais pas si le problème vient du code source en C, de compilation, de droits chmod, de code PHP ou même de config Apache .... ??
(Donc je poste le même message dans le forum PHP)

Code Source "test_source.c": OK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
     char cmd[1024];
     sprintf(cmd, "adduser -H %s", argv[1]);
     system(cmd);
     return 0;
}
Compilation en ligne de commande : OK
Les packages gcc make, glib, libstdc++, binutils et libc-dev sont installés sur la machine Linux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
gcc -o c_add_user test_source.c
Pas d'erreur ni de warning retourné à la compilation en ligne de commande.

Attribution des droits à l'exécutable "c_add_user": OK
Les essais avec
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 8 -rwsrwxrwx    1 admin    administ     5.9k Dec 12 15:49 c_add_user*
ne change pas le résultat de l'éxecution en ligne de commande, ni le résultat du retour HTML par le serveur.

Execution en ligne de commande: OK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
./c_add_user testcompil
qui m'ajoute bien le nouvel utilisateur "testcompil", vérifié par un
Code PHP "test_shell_linux.php" : NON OK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
session_start();
header("Content-Type: text/html"); 	
 
echo "<br/>Exec c.exe :";
$command = "./c_add_user";
$param=  " client_test_4_test" ;
 
if (is_file($command)) {
	exec($command.$param, $output); 
        echo "<br/>result: $output";
}
else{
	echo "fichier non trouvé";
}
?>
J'appelle la page :
https://www.mon_domain.fr/admin/test_shell_linux.php

Et là, je vérifie en ligne de commande si le nouvel utilisateur a été ajouté, mais non.


Un avis éclairé m'aiderait. Merci d'avance.