Problème de variables php vers sh
Résolu
Bonjour,
Pour les personnes intéressées, voici le code php & sh complet, par contre je sais pas si on peut faire plus propre, j'ai bien entendu donné des exemples de username, password et nom de domaine pour des raisons de sécurité.
Et je n'arrive pas à passer mes variables dans mon shell (voir code plus bas).
Code page PHP :
Code Shell de heb.sh : (se trouvant dans le même dossier)
Avez-vous des idées pour améliorer le code, passer les variables dans mon shell et le rendre plus propre svp ?
Merci d'avance
Pour les personnes intéressées, voici le code php & sh complet, par contre je sais pas si on peut faire plus propre, j'ai bien entendu donné des exemples de username, password et nom de domaine pour des raisons de sécurité.
Et je n'arrive pas à passer mes variables dans mon shell (voir code plus bas).
Code page PHP :
<?php //affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require('config.php'); $username="supraSupra"; $password="test"; $path = "/var/www/".$username; if (!is_dir($path)) { mkdir($path, 0777, true); } $vhost = $username.".conf"; $query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'"; $res_mysql_user = mysqli_query($conn, $query_mysql_user); $query_mysql_grant = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'"; $res_mysql_grant = mysqli_query($conn, $query_mysql_grant); $query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci"; $res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db); $query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'"; $res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege); $query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')"; $res_ftp = mysqli_query($conn, $query_ftp); file_put_contents("/etc/apache2/sites-available/".$vhost, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>"); $output = exec("./heb.sh $vhost"); ?>
Code Shell de heb.sh : (se trouvant dans le même dossier)
#!/bin/bash sudo a2ensite $vhost sudo service apache2 reload
Avez-vous des idées pour améliorer le code, passer les variables dans mon shell et le rendre plus propre svp ?
Merci d'avance
A voir également:
- Problème de variables php vers sh
- Easy php - Télécharger - Divers Web & Internet
- Windows 7 vers windows 10 - Accueil - Mise à jour
- Votre envoi est réacheminé vers son site de distribution - Forum Consommation & Internet
- Clavier qwerty vers azerty - Guide
- Mise a jour android 4.4.2 vers 5 - Forum Téléphones & tablettes Android
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
oublions provisoirement le php.
peux-tu donner un exemple simple de réception de variables en shell, par exemple à partir d'un appel en ligne de commande?
oublions provisoirement le php.
peux-tu donner un exemple simple de réception de variables en shell, par exemple à partir d'un appel en ligne de commande?
Bonsoir,
Tu avais posé la question dans ta précédente discussion....
à quoi je t'avais répondu :
https://forums.commentcamarche.net/forum/affich-37619992-bash-les-arguments-parametres
Tu avais posé la question dans ta précédente discussion....
à quoi je t'avais répondu :
https://forums.commentcamarche.net/forum/affich-37619992-bash-les-arguments-parametres
J’ai lu et relu la page, mais je suis sûr de pas comprendre quelque chose, j’ai essayer
Et dans mon sh :
Mais rien ne change, donc je présume que je comprends mal quelque chose …
Merci d’avance
$output = exec("./heb.sh ‘$vhost’");
Et dans mon sh :
#!/bin/bash set $vhost sudo a2ensite $vhost sudo service apache2 reload
Mais rien ne change, donc je présume que je comprends mal quelque chose …
Merci d’avance
Relis bien le chapitre
il faut utiliser les variables
chaque $x correspondant à la variable dans l'ordre de son passage
Si tu appelles un script avec trois paramètres ( ici des nombres .. )
Alors, pour récupérer chaque paramètre.. tu feras
Bref... suffit de lire le lien que je t'ai donné... je ne pense pas qu'on puisse trouver plus limpide et plus simple comme explications...
Paramètres positionnels
il faut utiliser les variables
$1 $2 $3 ...
chaque $x correspondant à la variable dans l'ordre de son passage
Si tu appelles un script avec trois paramètres ( ici des nombres .. )
./affiche_param.sh 1 2 3
Alors, pour récupérer chaque paramètre.. tu feras
echo "Le 1er paramètre est : $1" echo "Le second paramètre est : $2" echo "Le 3ème paramètre est : $3"
Bref... suffit de lire le lien que je t'ai donné... je ne pense pas qu'on puisse trouver plus limpide et plus simple comme explications...
Bonjour,
Quelques modifications sur le PHP, car ce vhost correspond plutôt au nom de dossier (du coup j'ai renommé vhost en vhost_conf), et en général le vhost et l'utilisateur SQL ne sont pas forcément égaux (d'ailleurs, les logins SQL sont généralement écrits en minuscules).
J'ai un peu corrigé aussi les droits car 777 c'est open bar. En tout rigueur, tout le contenu de ton dossier /var/www/supraSupra devrait appartenir à l'utilisateur www-data, groupe
Du coup au niveau du script shell, tu peux relativement extraire le nom du vhost. On en profite pour utiliser
Bonne chance
Quelques modifications sur le PHP, car ce vhost correspond plutôt au nom de dossier (du coup j'ai renommé vhost en vhost_conf), et en général le vhost et l'utilisateur SQL ne sont pas forcément égaux (d'ailleurs, les logins SQL sont généralement écrits en minuscules).
J'ai un peu corrigé aussi les droits car 777 c'est open bar. En tout rigueur, tout le contenu de ton dossier /var/www/supraSupra devrait appartenir à l'utilisateur www-data, groupe
www-data(
chown -R root:www-data) avec des droits 750 sur les dossiers (ainsi au moins, seul l'utilisateur apache peut y accéder) et même plutôt 640 sur les fichiers (ainsi seul l'administrateur de la machine peut modifier le site).
<?php //affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require('config.php'); $vhost="supraSupra" $username=$vhost; $password="test"; $vhost_conf = $username.".conf"; $path = "/var/www/".$vhost; if (!is_dir($path)) { mkdir($path, 0755, true); } $query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'"; $res_mysql_user = mysqli_query($conn, $query_mysql_user); $query_mysql_grant = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'"; $res_mysql_grant = mysqli_query($conn, $query_mysql_grant); $query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci"; $res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db); $query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'"; $res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege); $query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')"; $res_ftp = mysqli_query($conn, $query_ftp); file_put_contents("/etc/apache2/sites-available/".$vhost_conf, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>"); $output = exec("./heb.sh $vhost_conf"); ?>
Du coup au niveau du script shell, tu peux relativement extraire le nom du vhost. On en profite pour utiliser
systemctlplutôt que
servicequi n'est pas toujours utilisable.
#!/bin/bash vhost=$(grep vhost toto.txt | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/') sudo a2ensite $vhost sudo systemctl reload apache2
Bonne chance
A mon avis j’ai un problème de permission sur mon serveur car cela ne change rien, il n’a pas l’air de tenir compte de mon heb.sh tout le reste se fait sauf cela (Apache2 est installé avec l’user et le groupe www-data) tandis que les commandes de mon script sh doivent être exécutée en root je pense.
Y’a t’il une solution ? Je suis en Ubuntu 18.04.
Merci d’avance
Y’a t’il une solution ? Je suis en Ubuntu 18.04.
Merci d’avance
La commande ne fait rien,
Aussi bien ma page dossier.php et heb.sh sont dans le même dossier qui est /var/www/hebergeur/
Je sais que ces commandes dans le .sh doivent être lancé par root, mais je sais pas comment faire.
Tout le reste de la page php fonctionne cependant on dirait qu’il ignore heb.sh
Merci d’avance
Aussi bien ma page dossier.php et heb.sh sont dans le même dossier qui est /var/www/hebergeur/
Je sais que ces commandes dans le .sh doivent être lancé par root, mais je sais pas comment faire.
Tout le reste de la page php fonctionne cependant on dirait qu’il ignore heb.sh
Merci d’avance
Bonjour,
Voilà où j'en suis tout est dans le même répertoire /var/www/hebergeur/
Tout fonctionne à part l'execution du shell, j'ai mis les logs erreurs & sortie ci-dessous.
Merci d'avace pour votre aide.
Code php : (dossier.php)
Code shell : (heb.sh)
Log erreurs : (Erreurs.log)
Log sortie : (Sortie.log)
Voilà où j'en suis tout est dans le même répertoire /var/www/hebergeur/
Tout fonctionne à part l'execution du shell, j'ai mis les logs erreurs & sortie ci-dessous.
Merci d'avace pour votre aide.
Code php : (dossier.php)
<?php //affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require('config.php'); $vhost="suprasupra"; $username=$vhost; $password="test"; $vhost_conf = $username.".conf"; $path = "/var/www/".$vhost; $ftpuser = "ftpuser"; $ftpgroup = "ftpgroup"; if (!is_dir($path)) { mkdir($path, 0777, true); chown($path, $ftpuser); chgrp($path, $ftpgroup); } $query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'"; $res_mysql_user = mysqli_query($conn, $query_mysql_user); $query_mysql_grant = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'"; $res_mysql_grant = mysqli_query($conn, $query_mysql_grant); $query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci"; $res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db); $query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'"; $res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege); $query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')"; $res_ftp = mysqli_query($conn, $query_ftp); file_put_contents("/etc/apache2/sites-available/".$vhost_conf, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>"); $output = exec("./heb.sh $vhost_conf"); ?>
Code shell : (heb.sh)
#!/bin/bash LOG_FILE=Sortie.log ERR_FILE=Erreurs.log exec 1>$LOG_FILE exec 2>$ERR_FILE ls -hal # Sortie 'normale' -> STDOUT apt-get update # Erreur de droits -> STDERR vhost=$(grep vhost dossier.php | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/') sudo a2ensite $vhost sudo systemctl reload apache2
Log erreurs : (Erreurs.log)
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
Log sortie : (Sortie.log)
total 20K
drwsrwsrwt 2 www-data root 4.0K Jun 29 01:37 .
drwsrwsrwt 34 www-data www-data 4.0K Jun 29 01:34 ..
-rwxrwxrwt 1 www-data root 0 Jun 29 01:37 Erreurs.log
-rwxrwxrwt 1 www-data root 0 Jun 29 01:37 Sortie.log
-rwxrwxrwt 1 www-data root 443 Jun 21 00:26 config.php
-rwxrwxrwt 1 root root 1.8K Jun 25 02:26 dossier.php
-rwxrwxrwt 1 root root 296 Jun 29 01:33 heb.sh
Reading package lists...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Bon j'ai adapté mon fichier sudoers sur ubuntu 18.04, mais il y'a une erreur autre part.
Tout fonctionne bien sauf que dans donc le fichier suprasupra.conf se créer bien dans /etc/apache2/sites-available avec tout ce qu'il le faut dedans et tout.
Mais le sauf que le sudo a2ensite $vhost et le sudo systemctl reload apache2, ne se font toujours pas.
Quelqu'un a une idée svp ?
Merci d'avance.
Voici les adaptations :
Je rappel que mon php et mon script shell se trouve dans le même dossier.
Code php : (dossier.php)
Voici le script shell : (heb.sh)
Voici le fichier Erreurs.log :
Voici le fichier Sortie.log :
Bon j'ai adapté mon fichier sudoers sur ubuntu 18.04, mais il y'a une erreur autre part.
Tout fonctionne bien sauf que dans donc le fichier suprasupra.conf se créer bien dans /etc/apache2/sites-available avec tout ce qu'il le faut dedans et tout.
Mais le sauf que le sudo a2ensite $vhost et le sudo systemctl reload apache2, ne se font toujours pas.
Quelqu'un a une idée svp ?
Merci d'avance.
Voici les adaptations :
Je rappel que mon php et mon script shell se trouve dans le même dossier.
Code php : (dossier.php)
<?php //affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require('config.php'); $vhost="suprasupra"; $username=$vhost; $password="test"; $vhost_conf = $username.".conf"; $path = "/var/www/".$vhost; $ftpuser = "ftpuser"; $ftpgroup = "ftpgroup"; if (!is_dir($path)) { mkdir($path, 0777, true); chown($path, $ftpuser); chgrp($path, $ftpgroup); } $query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'"; $res_mysql_user = mysqli_query($conn, $query_mysql_user); $query_mysql_grant = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'"; $res_mysql_grant = mysqli_query($conn, $query_mysql_grant); $query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci"; $res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db); $query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'"; $res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege); $query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')"; $res_ftp = mysqli_query($conn, $query_ftp); file_put_contents("/etc/apache2/sites-available/".$vhost_conf, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>"); $output = exec("sudo /var/www/hebergeur/heb.sh $vhost_conf"); exit; ?>
Voici le script shell : (heb.sh)
#!/bin/bash LOG_FILE=Sortie.log ERR_FILE=Erreurs.log exec 1>$LOG_FILE exec 2>$ERR_FILE ls -hal # Sortie 'normale' -> STDOUT vhost=$(grep vhost dossier.php | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/') sudo a2ensite $vhost sudo systemctl reload apache2
Voici le fichier Erreurs.log :
ERROR: No site found matching *:80>\r\n!
ERROR: Site suprasupra; does not exist!
ERROR: Site $username=$vhost; does not exist!
ERROR: Site $vhost does not exist!
ERROR: Site = does not exist!
ERROR: Site $username..conf; does not exist!
ERROR: Site $path does not exist!
ERROR: Site = does not exist!
ERROR: Site /var/www/.$vhost; does not exist!
ERROR: Site file_put_contents(/etc/apache2/sites-available/.$vhost_conf, does not exist!
ERROR: Site "<VirtualHost does not exist!
ERROR: Site ServerName does not exist!
ERROR: Site $username.test.bernrnrnServerAdmin does not exist!
ERROR: Site admin@test.bern does not exist!
ERROR: Site DocumentRoot does not exist!
ERROR: Site $pathrnrnrn does not exist!
ERROR: Site ErrorLog does not exist!
ERROR: Site /var/logs/apache2/error.logrn does not exist!
ERROR: Site CustomLog does not exist!
ERROR: Site /var/logs/apache2/access.log does not exist!
ERROR: Site combinedrnrnrn</VirtualHost>"); does not exist!
ERROR: Site $output does not exist!
ERROR: Site = does not exist!
ERROR: Site exec("sudo does not exist!
ERROR: Site /var/www/hebergeur/heb.sh does not exist!
ERROR: Site $vhost_conf"); does not exist!
ERROR: Site exit; does not exist!
Voici le fichier Sortie.log :
total 20K
drwsrwsrwt 2 www-data root 4.0K Jun 29 01:37 .
drwsrwsrwt 34 www-data www-data 4.0K Jul 4 23:58 ..
-rwxrwxrwt 1 www-data root 0 Jul 5 00:06 Erreurs.log
-rwxrwxrwt 1 www-data root 0 Jul 5 00:06 Sortie.log
-rwxrwxrwt 1 www-data root 443 Jun 21 00:26 config.php
-rwsrwsrwt 1 www-data root 1.8K Jul 5 00:05 dossier.php
-rwxrwxrwt 1 www-data root 243 Jul 5 00:05 heb.sh
Bonjour,
Il y a des erreurs dans ton script php (confusions entre la syntaxe shell et PHP) qu'on retrouve dans
devrait être corrigée en :
Idem pour
Bonne chance
Il y a des erreurs dans ton script php (confusions entre la syntaxe shell et PHP) qu'on retrouve dans
Erreurs.logau niveau des commandes construites à partir de variables PHP (en PHP, tu ne peux pas évaluer le contenu d'une variable à l'intérieur d'une chaîne de caractères). Ainsi, l'instruction :
$query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'";
devrait être corrigée en :
$query_mysql_user = "CREATE USER ".$username."@'%' IDENTIFIED BY \'".$password."\"";
Idem pour
$query_mysql_grant,
$query_mysql_create_db,
$query_mysql_all_privilege.
Bonne chance
PHP: La fonctionnalité la plus intéressante des chaîne de caractères guillemets doubles est que les noms de variables seront interprétés.
https://www.php.net/manual/fr/language.types.string.php
https://www.php.net/manual/fr/language.types.string.php
Bonjour,
J'ai essayé ta méthode, si j'ai bien compris le concepte.
Code php : (dossier.php)
Cela me donne toujours les mêmes fichiers log, je rassure j'avais bien vider mes 2 fichiers log avant d'essayer et je l'ai fais plusieurs fois.
Erreurs.log :
Sortie.log
Si cela peut aider a résoudre mon problème mon but et qu'à la création d'un utilisateur cela crée son dossier personnel dans /var/www/ avec comme user ftpuser & ftpgroup et que sa ajoute son compte avec son accès dans mon pureftpd-mysql.
Que sa créer l'user sql et sa table.
Que cela créer le fichier vhost en ".conf" dans le dossier /etc/apache2/sites-available/ et que cela active le vhost dans le dossier /etc/apache2/sites-enabled/ et que cela reload la configuration d'apache2.
Genre me permettre de créer un hébergement complet via formulaire.
Merci d'avance.
J'ai essayé ta méthode, si j'ai bien compris le concepte.
Code php : (dossier.php)
<?php //affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require('config.php'); $vhost="suprasupra"; $username=$vhost; $password="test"; $vhost_conf = $username.".conf"; $path = "/var/www/".$vhost; $ftpuser = "ftpuser"; $ftpgroup = "ftpgroup"; if (!is_dir($path)) { mkdir($path, 0777, true); chown($path, $ftpuser); chgrp($path, $ftpgroup); } $query_mysql_user = "CREATE USER ".$username."@'%' IDENTIFIED BY \'".$password."\'"; $res_mysql_user = mysqli_query($conn, $query_mysql_user); $query_mysql_grant = "GRANT USAGE ON * . * TO ".$username."@'%' IDENTIFIED BY \'".$password."\'"; $res_mysql_grant = mysqli_query($conn, $query_mysql_grant); $query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS ".$username." DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci"; $res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db); $query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON ".$username." . * TO ".$username."@'%'"; $res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege); $query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')"; $res_ftp = mysqli_query($conn, $query_ftp); file_put_contents("/etc/apache2/sites-available/".$vhost_conf, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>"); $output = exec("sudo /var/www/hebergeur/heb.sh $vhost_conf"); exit; ?>
Cela me donne toujours les mêmes fichiers log, je rassure j'avais bien vider mes 2 fichiers log avant d'essayer et je l'ai fais plusieurs fois.
Erreurs.log :
ERROR: No site found matching *:80>\r\n!
ERROR: Site suprasupra; does not exist!
ERROR: Site $username=$vhost; does not exist!
ERROR: Site $vhost does not exist!
ERROR: Site = does not exist!
ERROR: Site $username..conf; does not exist!
ERROR: Site $path does not exist!
ERROR: Site = does not exist!
ERROR: Site /var/www/.$vhost; does not exist!
ERROR: Site file_put_contents(/etc/apache2/sites-available/.$vhost_conf, does not exist!
ERROR: Site "<VirtualHost does not exist!
ERROR: Site ServerName does not exist!
ERROR: Site $username.test.bernrnrnServerAdmin does not exist!
ERROR: Site admin@test.bern does not exist!
ERROR: Site DocumentRoot does not exist!
ERROR: Site $pathrnrnrn does not exist!
ERROR: Site ErrorLog does not exist!
ERROR: Site /var/logs/apache2/error.logrn does not exist!
ERROR: Site CustomLog does not exist!
ERROR: Site /var/logs/apache2/access.log does not exist!
ERROR: Site combinedrnrnrn</VirtualHost>"); does not exist!
ERROR: Site $output does not exist!
ERROR: Site = does not exist!
ERROR: Site exec("sudo does not exist!
ERROR: Site /var/www/hebergeur/heb.sh does not exist!
ERROR: Site $vhost_conf"); does not exist!
ERROR: Site exit; does not exist!
Sortie.log
total 20K
drwsrwsrwt 2 www-data root 4.0K Jun 29 01:37 .
drwsrwsrwt 34 www-data www-data 4.0K Jul 4 23:58 ..
-rwxrwxrwt 1 www-data root 0 Jul 5 00:06 Erreurs.log
-rwxrwxrwt 1 www-data root 0 Jul 5 00:06 Sortie.log
-rwxrwxrwt 1 www-data root 443 Jun 21 00:26 config.php
-rwsrwsrwt 1 www-data root 1.8K Jul 5 00:05 dossier.php
-rwxrwxrwt 1 www-data root 243 Jul 5 00:05 heb.sh
Si cela peut aider a résoudre mon problème mon but et qu'à la création d'un utilisateur cela crée son dossier personnel dans /var/www/ avec comme user ftpuser & ftpgroup et que sa ajoute son compte avec son accès dans mon pureftpd-mysql.
Que sa créer l'user sql et sa table.
Que cela créer le fichier vhost en ".conf" dans le dossier /etc/apache2/sites-available/ et que cela active le vhost dans le dossier /etc/apache2/sites-enabled/ et que cela reload la configuration d'apache2.
Genre me permettre de créer un hébergement complet via formulaire.
Merci d'avance.
Bonjour,
Je te recommande d'ajouter des
Ton fichier
Pour l'histoire des double-quotes en PHP, je ne savais pas que cette syntaxe marchait (ça fait des années que je n'ai pas écrit de PHP), donc si tes erreurs ne sont pas dues à ça, utilise la syntaxe qui te plaît.
Bonne chance
Je te recommande d'ajouter des
echodans ton script pour vérifier pas à pas la valeur de chacune de tes variables (idem dans le script shell).
Ton fichier
error.logsemble suggérer que la valeur passée en paramètre à
a2ensiteest incorrecte. Peux-tu nous redonner le contenu de
heb.shafin qu'on voit s'il extrait correctement l'information de ton fichier
dossier.php?
Pour l'histoire des double-quotes en PHP, je ne savais pas que cette syntaxe marchait (ça fait des années que je n'ai pas écrit de PHP), donc si tes erreurs ne sont pas dues à ça, utilise la syntaxe qui te plaît.
Bonne chance
Désolé je suis un vrai débutant.
Je n’ai jamais codé de sh mais je remarque que mon php ne pourra pas seul réaliser ce que je veux faire