EnvoAvatar : téléchargement d'images impossible  Début

  • icon_confused
    Bien qu'ayant donné les droits d'acces au répertoire images/avatar (chmod 777)
    Je ne parvients toujours pas à télécharger des images.
    J'ai re-téléchargé la version 1.1 et ré-installé, mais rien ne change.
    Le chemin que j'ai rentré dans la configue est : ../images/avatar. J'ai aussi testé avec d'autres chemin(./images/avatar;/images/avatar;images/avatar), hélas toujours rien.
    J'utilise PostNuke 0.750 sur un serveur SME, mais je ne connais pas grand chose au PHP.

    Aurais-tu une solution?

    Florianbfr
  • puisque tu as bien modifié les droits d'accès en 777, il ne fait pas de doute que ton problème est bien un problème de chemin. Chez moi tout se passe bien avec juste images/avatar mais je sais que suivant la config du serveur tout n'est pas aussi simple. Sur certains serveurs windows il a fallu mettre le "vrai" chemin d'accès au répertoire (un truc du style "c:\dossier/sousdossier/images/avatar" sur certains serveurs linux le chemin en partant du home de l'utilisateur (un truc du style home/nom_util/public_html/images/avatar) sur d'autres encore le chemin par rapport à la racine du serveur web (un truc du style public_html/postnuke/images/avatar)
    en un mot c'est la galère !!!
    Il faut que je regarde comment guider l'utilisateur lors de la configuration.
  • Pour t'aider à résoudre ton problème, tu peux essayer d'ajouter les lignes :

    Code

    $openbasedir = ini_get('open_basedir');

    echo '<tr><td>Your PHP server has "open_basedir" set to:</td><td> '. $openbasedir . '</td></tr>';

    $currentdir = dirname(__file__);

    echo '<tr><td>EnvoAvatar is installed in:</td><td> ' . $currentdir . '</td></tr>';

    $avatardir = pnModGetVar('EnvoAvatar', 'diravatar');

    echo '<tr><td>Current directory to upload avatars:</td><td>' . $avatardir . '</td></tr>';

    if ($avatardir) {
      if (!is_dir($avatardir) || !is_writable($avatardir) || !$avatardir) {
        echo '<tr><td colspan="2"><font color="#FF0000">'
        . '<i>This is not a directory, or this folder is not writable'
        . ' by the webserver. Please check the permissions'
        . '</i></font></td></tr>';
      } else {
        echo '<tr><td colspan="2"><font color="#00FF00">'
        . '<i>The webserver is able to write to this folder'
        . '</i></font></td></tr>';
      }
    }


    dans le fichier modules/EnvoAvatar/admin.php file juste avant les lignes:

    Code

    echo "<tr><td valign=\"top\"><b>"._ADMAVATAR5.": </b></td><td>"
            ."<input type=text size=25 maxlength=50 name=\"xdiravatar\" value=\""
                    .pnModGetVar('EnvoAvatar','diravatar')
                    ."\" ><b>default:</b> "._ADMAVATAR6."</td>"
            ."</tr>"


    Cela écrira à l'écran le répertoire de base, le répertoire où est le module et si le répertoire que tu as choisi est autorisé en écriture. Peut-être cela te donnera-t-il des idées de chemin à essayer icon_confused
    PS: Pardon, j'ai codé cela très vite, et j'ai oublié que ta demande était en français, j'ai donc mis tous les messages en anglais dans le code, la force de l'habitude ... désolé
  • Ok, merci beaucoup, je regarde, je teste et te tiens au courant.
    Quand à l'anglais, this not a big problem. I don't speake very well but i can anderstand. icon_lol
  • Voici le résultat obtenu:
    Your PHP server has "open_basedir" set to: /home/e-smith/files/ibays/Primary
    EnvoAvatar is installed in: /home/e-smith/files/ibays/Primary/html/modules/EnvoAvatar
    Current directory to upload avatars: images/avatar
    The webserver is able to write to this folder

    Mais j'obtiens toujours l'ERROR6
  • Bon la phrase "The webserver is able to write to this folder" me laisse penser que ton chemin est correct est que c'est la fonction copy du php qui a un problème. Donc on va essayer une autre stratégie : si ton php n'est pas trop ancien, ouvre modules/envoAvatar/index.php et remplace les lignes

    Code

    $id=pnUserGetVar('uid');
                @copy($uploadfile['tmp_name'], "$pathavatar/pers_$id.$ext") or $err=6;
            if ($pathphpbb!=''){
                @copy($uploadfile['tmp_name'], "$pathphpbb/pers_$id.$ext") or $err=7;
            }


    par:

    Code

    $id=pnUserGetVar('uid');
                if (!move_uploaded_file($uploadfile['tmp_name'], "$pathavatar/pers_$id.$ext")) {
                    $err=6;
                }
                if ($pathphpbb!=''){
                    if (!move_uploaded_file($uploadfile['tmp_name'], "$pathphpbb/pers_$id.$ext")) {
                        $err=7;
                    }
                }


    Et dis moi si çà marche.
  • Ok, SUPER !!!
    avec ce code ça fonctionne !!!
    Un tres grand merci à toi pour ton aide et tes compétences en PHP

    vraiment tres cool de ta part. Je ne manquerais pas de mettre un lien vers ton site.
    Il se peut que j'ai d'autres questions à l'avenir et je sais que l'on peut compter sur toi.

    @+ icon_wink
  • 7 visiteurs

Données pour les 15 dernières minutes