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
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
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
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
qui m'ajoute bien le nouvel utilisateur "testcompil", vérifié par un
Code PHP "test_shell_linux.php" : NON OK
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.
Partager