ce fichier ne s'ouvre pas

Eléphanteau du PHP | 23 Messages

12 nov. 2008, 14:18

bonjour
<?php
if (false === ( $fp = fopen('.htpasswd', 'ab'))) {
echo 'erreur : impossible d\'ouvrir le fichier', "\n";
} else {
// + encodage du mot de passe
fprintf($fp, '%s:%s' . "\r\n", $_POST['user'], crypt($_POST['pwd'])); //"\r\n" pour retour à la ligne windows
fclose($fp);
echo 'succès: votre nouvel utilisateur est correctement enregistre', "\n";
}
?>
le fichier ne s'ouvre pas, il y a un warning :

Code : Tout sélectionner

failed to open stream: Permission denied
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 nov. 2008, 15:33

hello !

"failed to open stream" => PHP n'a pas réussi à ouvrir le fichier
"Permission denied" => PHP n'a pas les droits pour ouvrir le fichier

Yapuka :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 23 Messages

12 nov. 2008, 17:03

merci pour la traduction, mais encore ...

en effet php ne peux pas ouvrir le fichier, mais pour quel raison il est bien présent dans le même repertoire

et pourquoi n'a t il pas le droitr, il n'y a aucun htaccess

merci

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

12 nov. 2008, 17:08

Il n'y a pas que le .htaccess qui peut gérer les droits sur un fichier (ou un dossier)
As-tu regardé le chmod de ton fichier ?

Eléphanteau du PHP | 23 Messages

12 nov. 2008, 17:21

en effet, tout est en 777

ca avance maintenant :

Call to undefined function: fprintf()

le code est devenu :
<?php
if (isset($_POST['login']) AND isset($_POST['pass']))
{
    $login = $_POST['login'];
    $pass_crypte = crypt($_POST['pass']); // On crypte le mot de passe

    echo 'Ligne qui sera copiée copier dans le .htpasswd :<br />' . $login . ':' . $pass_crypte;

if (false === ( $fp = fopen('.htpasswd', 'ab'))) {
echo 'erreur : impossible d\'ouvrir le fichier', "\n";
} else {
echo ' <br /><br />ouverture du fichier, <br />';
// + encodage du mot de passe
fprintf($fp, '%s:%s' . "\r\n", $login, $pass_crypte); //"\r\n" pour retour à la ligne windows
fclose($fp);
echo 'succès: votre nouvel utilisateur est correctement enregistre', "\n";
}
}
else // On n'a pas encore rempli le formulaire
{
?>
</p>

<p>Entrez votre login et votre mot de passe pour le crypter.</p>

<form action="" method="post">
<p>
        Login : <input type="text" name="login"><br />
        Mot de passe : <input type="text" name="pass"><br /><br />
    
        <input type="submit" value="Crypter !">
    </p>
</form>

<?php
}
?>
merci pour votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 nov. 2008, 21:35

D'après la documentation de la fonction fprintf(), celle-ci n'est apparue que depuis la version 5 de php. Est-ce que tu utilises bien cette version ? (sans quoi php ne pourra effectivement pas la connaitre :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 23 Messages

13 nov. 2008, 11:24

j'ai verifié, le php 5 est bien installé sur le serveur

merci

je cloture cette conversation, je vais faire autrement et je revient ssur le forum encas de pb

merci pour tout

ps : je vais utiliser fwrite à la place, on ne sais jamais