Modifier le fichier .htpasswd via php

xunil2003 Messages postés 830 Statut Membre -  
xunil2003 Messages postés 830 Statut Membre -
Bonjour,

Je cherche a modifier mon fichier .htpasswd avec ce script php

$command="htpasswd -nb /var/www/maison/N4/.htpasswd xunil2003 ".$passwd2."".$passwd1; 
exec($command,$res); 
echo $res[0]; ;


Les options de htpasswd
        htpasswd [-cmdpsD] passwordfile username
        htpasswd -b[cmdpsD] passwordfile username password

        htpasswd -n[mdps] username
        htpasswd -nb[mdps] username password
 -c  Create a new file.
 -n  Don't update file; display results on stdout.
 -m  Force MD5 encryption of the password.
 -d  Force CRYPT encryption of the password (default).
 -p  Do not encrypt the password (plaintext).
 -s  Force SHA encryption of the password.
 -b  Use the password from the command line rather than prompting for it.
 -D  Delete the specified user.


Comme le terminal
root@debian:/var/www/maison/N4# htpasswd .htpasswd  xunil2003 
New password: 
Re-type new password: 
Updating password for user xunil2003 
root@debian:/var/www/maison/N4#


une idée ?

Merci
A voir également:

3 réponses

Alain_42 Messages postés 5413 Statut Membre 894
 
a mon avis il doit y avoir un pb de droits sur le fichier htpasswd

car depuis la console tu es en root alors que depuis php tu es apache
il faudrait modifier par chmod, mais n'est ce pas dangereux d'autoriser ainsi la modif par php d'un fichier sensé sécuriser ?
0
xunil2003 Messages postés 830 Statut Membre 14
 
Avec dolphin j'ai modifier les droits pour faire des tests de .htpasswd
j'ai donné tout les droits execution, ecriture, lecture a tous et au groupe.

avec ceci
$command="htpasswd -nb /var/www/maison/N4/.htpasswd ".$user0."".$passwd1;  
exec($command,$res); 
echo $res[0]; 


L'echo affiche de "echo $res[0];" ;
/var/www/maison/N4/.htpasswd:Wip0.9TPP/G2M


Mais ca marche pas.

Merci.
0
xunil2003 Messages postés 830 Statut Membre 14
 
Bonjour,

Finalement j'ai fait comme ceci pour modifier le mot de passe
		if(isset($_POST['update'])) 
		{ 
exec("htpasswd -D /var/www/maison/N4/.htpasswd $user2");
sleep (5);
exec("htpasswd -b /var/www/maison/N4/.htpasswd $user2 $mdp");
echo "vous devez redemarrer le navigateur";
}


Je ne comprend pas pourquoi je ne peut pas modifier directement le mot de passe de l'utilisateur
exec("htpasswd -b /var/www/maison/N4/.htpasswd $user2 $mdp");

je suis obligé de le supprimer
exec("htpasswd -D /var/www/maison/N4/.htpasswd $user2");

puis de le créer
exec("htpasswd -b /var/www/maison/N4/.htpasswd $user2 $mdp");

bizarre non ?

Merci
0