[RESOLU] Pas d'acces à des fichiers image uploadés par formulaire

Eléphanteau du PHP | 10 Messages

21 déc. 2015, 23:43

Bonsoir à toutes et à tous.
Je suis nouveau sur le forum alors je me présente: Farhani, Tunisie, amateur autodidacte dans la conception web, de formation ingénieur electromécanicien, retraité.
Je constate que les fichiers image que j' uploade via un ftp ont un droit d'acces de 644 et elles sont accessibles, directement ou via un script php:

ex:

http://www.winsem.net/bi-beta/ImagesAnn ... t4hjSD.png


Alors que celles uploadées via mon formulaire ont un droit d'acces de 600 et ne sont accessibles ni directement ni via un script php

ex:

http://www.winsem.net/bi-beta/ImagesAnn ... biFUyB.jpg


Ces dernières deviennent accessibles quand je modifie manuellement leur droit d'acces de 600 à 644.

J'ai assayé de modifier, automatiquement lors de l'upload de l'image, ce droit d'acces en introduisant une commande chmod dans le script comme suit:

Code : Tout sélectionner

chmod($StockageIllustration , 0644);

mais sans resultat

Donc je cherche de l'aide pour savoir COMMENT FAIRE pour imposer un droit d'acces de 644 à chaque fichier image lors de son upload via mon formulaire.

nb: la variable $StockageIllustration contient le chemin d'acces au fichier

Cordialement

A. Farhani

Mammouth du PHP | 2703 Messages

22 déc. 2015, 00:03

ce sont les droits du fichier php et/ou les droits du répertoire dans lequel sont les images qu'il faut changer pour que les images soient accessibles.

Eléphanteau du PHP | 10 Messages

22 déc. 2015, 00:10

Bonsoir or1,

Il s'agit des droits d'acces aux fichier image.

Merci

A. Farhani

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

22 déc. 2015, 00:15

Ce que te suggère or1, c'est justement de vérifier les droits du répertoire qui les contient ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 10 Messages

22 déc. 2015, 00:30

Bonsoir @rtur,

Tous les dossiers ont un droit d'acces de 755 , même celui qui contient les images, et je n'ai pas de problème avec ça, mon problème c'est au niveau des droits d'acces au fichier proprement dit.
Quand j'upload des images avec un ftp elles prennent 644 comme droit d'acces et quand j'upload des images avec mon formulaire elles prennent 600 comme droit d'acces.
Ce que je cherche à faire c'est d'attribuer un droit d'acces de 644 aux images que j'upload avec mon formulaire.
j'ai essayé ceci:

Code : Tout sélectionner

chmod($StockageIllustration , 0644);
mais sans resultat

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

22 déc. 2015, 09:50

Sans résultat, c'est à dire ?
Les droits sont changés ou pas ?

Si ce n'est pas changé, regarde les logs de ton serveur PHP pour voir le message d'erreur
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 10 Messages

22 déc. 2015, 10:15

Bonjour,

Non ils ne sont pas chagés, et je ne reçois aucun msg d'erreur

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

22 déc. 2015, 11:22

Regarde dans les logs PHP et dans les logs système, si une commande chmod échoue, forcément tu dois avoir une trace quelque part.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 1029 Messages

22 déc. 2015, 11:30

Et plutôt que de t'éparpiller sur différents forum, si tu nous montrait ton code complet pour voir ce que tu fais ?
L'expérience est la somme de toutes nos erreurs.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

22 déc. 2015, 11:54

Et plutôt que de t'éparpiller sur différents forum, si tu nous montrait ton code complet pour voir ce que tu fais ?
Si on clique sur "tout sélectionner" dans son message sur Openclassrooms, ça renvoie sur le message de PHPfrance, c'est sympa ! :-)
https://openclassrooms.com/forum/sujet/ ... s-par-form
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 1029 Messages

22 déc. 2015, 12:21

Oui mais bon on a le même message sur DVP, mais cela ne fait pas avancer le schmiblick :)
L'expérience est la somme de toutes nos erreurs.

Eléphanteau du PHP | 10 Messages

22 déc. 2015, 12:35

Bonjour,

Certes vous avez raison, mais je me suis dit en diversifiant les sources je pourrais trouver une solution à mon problème.

Ci-après le code

Code : Tout sélectionner

<?php // Traitement de la Première photo if(isset ($_FILES['IllustrationPhoto']['name'][0])) { $PoidsIllustrationPhoto1 = $_FILES['IllustrationPhoto']['size'][0]; if( $PoidsIllustrationPhoto1 > 0 ) { if ( $PoidsIllustrationPhoto1 <= $PoidsMaxiIllustrationPhoto) { $NomIllustrationPhoto1 = $_FILES['IllustrationPhoto']['name'][0]; $GenreIllustrationPhoto1 = $_FILES['IllustrationPhoto']['type'][0]; $CheminIllustrationPhoto1 = $_FILES['IllustrationPhoto']['tmp_name'][0]; $ExtensionPhoto1=strrchr($NomIllustrationPhoto1,'.'); $ExtensionPhoto1=substr($ExtensionPhoto1,1) ; Include 'NouveauNomIllustration.php'; $NouveauNomIllustrationPhoto1 = $NouveauNom.".".$ExtensionPhoto1; $DossierStokageIllustration = 'ImagesAnnonces/'; //Definition du nouveau chemin d'acces de la photo1 $StockageIllustration = $DossierStokageIllustration . $NouveauNomIllustrationPhoto1; //Attribuer le droit d'accès de 0644 chmod($StockageIllustration , 0644); //Renomer le chemin d'accés temporaire de l'illustration et le déplacer vers le dossier ImagesAnnonces/ rename($CheminIllustrationPhoto1,$StockageIllustration); $SousInformation1 = ""; } else { $SousInformation1 = "1"; } } else { $NouveauNomIllustrationPhoto1 = ""; $SousInformation1 = ""; } } else { $NouveauNomIllustrationPhoto1 = ""; $SousInformation1 = ""; } ?>
NB:
la variable $CheminIllustrationPhoto1 contient le chemin d'accès temporaire.
la variable $StockageIllustration contient le chemin d'accès final.

Merci

Mammouth du PHP | 1029 Messages

22 déc. 2015, 12:43

Oui, donc tu ne transfert aucune photo !!!! où se trouve la function move_uploaded_file() ?
L'expérience est la somme de toutes nos erreurs.

Eléphanteau du PHP | 10 Messages

22 déc. 2015, 12:48

Le code précedent est inclu dans un autre code qui assure l'insertion des photos dans la bdd avec bien sur l'ensemble des informations provenant d'un formulaire.

Ci-après une partie de ce code :

Code : Tout sélectionner

<?php //""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" // Traitement des Illustrations "PHOTO" include "TraitementIllustrationPhoto.php"; // le fichier contenant le précedent code .... // Fin tRaitement de l'Illustration // On determine le code de l'annonce include "DeterminationCodeAnnonce.php"; // On enregistre les informations relatives à l'annonce du visiteur actuel mysql_query("INSERT INTO annonces VALUES('', '$Type', '$Categorie', '$Titre', '$Texte', '$NouveauNomIllustrationPhoto1', '$NouveauNomIllustrationPhoto2', '$NouveauNomIllustrationPhoto3', '$NouveauNomIllustrationPhoto4', '$NouveauNomIllustrationPhoto5', '$IllustrationVideo', '$Gouvernorat', '$CodePostal', '$Prix', '$QualiteAnnonceur', '$Nom', '$Prenom', '$AdresseEmail', '$NumeroTel', '$VisibiliteNrTel', '$Date', '$Code_Annonce_VA', '$NbrConsultationAnnonce', '$Signalement' )")OR DIE (mysql_error()); $Information = "Annonce enregistrée. Merci pour votre confiance.</br>".$SousInformation; $Color = "yellow"; echo "<p id='divcommunicationDA'> <embed src='2333_1.mp3' autostart='true' loop='false' hidden=true></embed> <br /> <span style='color:$Color'>$Information</span></p>"; ?>
Voilà j'espère qu'avec tout ça vous pouvez m'aider à solutionner mon problème.

Cordialement

A. Farhani

Mammouth du PHP | 1029 Messages

22 déc. 2015, 12:53

C'est moi, ou j'ai l'impression de parler dans le vide ??????
il faut que tu déplaces ta photos dans le bon répertoire avec la fonction move_upload_file(), sinon dans ton cas tu donnes juste un chemin qui pointe sur rien, donc normal que tes photos ne s'affiche pas.

Inspire toi du tuto suivant
Modifié en dernier par Maitrepylos le 22 déc. 2015, 12:55, modifié 1 fois.
L'expérience est la somme de toutes nos erreurs.