Problème de variables php vers sh
Résolu/Fermé
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
-
Modifié le 28 juin 2021 à 10:23
mamiemando Messages postés 33336 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 5 novembre 2024 - 9 juil. 2021 à 01:32
mamiemando Messages postés 33336 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 5 novembre 2024 - 9 juil. 2021 à 01:32
A voir également:
- Problème de variables php vers sh
- Windows 7 vers windows 10 - Accueil - Mise à jour
- Easy php - Télécharger - Divers Web & Internet
- Qwerty vers azerty - Guide
- Transferer photo android vers pc - Guide
5 réponses
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
Ambassadeur
1 551
23 juin 2021 à 21:41
23 juin 2021 à 21:41
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?
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
23 juin 2021 à 22:25
23 juin 2021 à 22:25
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
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
23 juin 2021 à 23:37
23 juin 2021 à 23:37
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
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
>
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
Modifié le 24 juin 2021 à 00:19
Modifié le 24 juin 2021 à 00:19
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...
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
>
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
24 juin 2021 à 00:29
24 juin 2021 à 00:29
Désolé encore je vais vraiment paraître bête mais je le comprends comme ceci :
Et dans mon sh :
$output = exec("./heb.sh vhost");
Et dans mon sh :
#!/bin/bash sudo a2ensite $vhost sudo service apache2 reload
jordane45
Messages postés
38270
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 novembre 2024
4 695
>
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
24 juin 2021 à 04:43
24 juin 2021 à 04:43
Dans ton bash il faut utiliser $1. Et non pas $vhost
$1 correspond au premier paramètre ( peu importe le nom que tu lui as donné côté PHP)
$1 correspond au premier paramètre ( peu importe le nom que tu lui as donné côté PHP)
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
7 801
Modifié le 24 juin 2021 à 12:48
Modifié le 24 juin 2021 à 12:48
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
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
24 juin 2021 à 17:54
24 juin 2021 à 17:54
Bonjour,
Dans le script Shell je remplace toto.txt par le nom de ma page php (dossier.php) ?
C’est bien cela ?
Merci d’avance
Dans le script Shell je remplace toto.txt par le nom de ma page php (dossier.php) ?
C’est bien cela ?
Merci d’avance
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
7 801
>
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
Modifié le 28 juin 2021 à 10:24
Modifié le 28 juin 2021 à 10:24
Oui, tout à fait.
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
>
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
28 juin 2021 à 11:36
28 juin 2021 à 11:36
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
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
7 801
>
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
28 juin 2021 à 11:48
28 juin 2021 à 11:48
Bonjour, est-ce que la commande :
... fait ce qu'il faut ? Quel est le chemin vers le script php ? Et enfin, oui ton script shell (
Bonne chance
grep vhost /chemin/vers/le/fichier.php | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/'
... fait ce qu'il faut ? Quel est le chemin vers le script php ? Et enfin, oui ton script shell (
heb.sh) doit être lancé en root ou via
sudo(e.g.
sudo ./heb.sh)
Bonne chance
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
>
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
Modifié le 28 juin 2021 à 12:45
Modifié le 28 juin 2021 à 12:45
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
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
Modifié le 29 juin 2021 à 01:54
Modifié le 29 juin 2021 à 01:54
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...
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
7 801
5 juil. 2021 à 13:35
5 juil. 2021 à 13:35
Il faudrait mettre
sudodevant
apt-get update. Ceci dit, vu que tu n'installes pas de paquets, tu n'as aucune raison de lancer
sudo apt-get update...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
5 juil. 2021 à 00:31
5 juil. 2021 à 00:31
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
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
7 801
5 juil. 2021 à 13:41
5 juil. 2021 à 13:41
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
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
1 551
>
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
5 juil. 2021 à 19:19
5 juil. 2021 à 19:19
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
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
>
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
6 juil. 2021 à 00:39
6 juil. 2021 à 00:39
Bonjour,
C'est ce que je pensais aussi au premier abord, mais bon je vais toujours essayer de suivre le conseil de mamiemando pour voir ce que cela donne.
Je vous tiens au courant.
Bien à vous.
C'est ce que je pensais aussi au premier abord, mais bon je vais toujours essayer de suivre le conseil de mamiemando pour voir ce que cela donne.
Je vous tiens au courant.
Bien à vous.
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
>
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
Modifié le 6 juil. 2021 à 01:16
Modifié le 6 juil. 2021 à 01:16
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.
mamiemando
Messages postés
33336
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
5 novembre 2024
7 801
>
Tzmagnum
Messages postés
126
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
10 mai 2022
Modifié le 9 juil. 2021 à 01:34
Modifié le 9 juil. 2021 à 01:34
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
23 juin 2021 à 22:04
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