2009-12-07 6 views
1

PHP mySQLfichier image permission - Image Resizer

Salut, j'ai un problème intéressant. J'ai un formulaire dans mes cms qui permet à l'administrateur de télécharger des images sur le serveur. Le script redimensionne les images à une vignette (hauteur 170px) et une grande image (hauteur 600px). Les vignettes ont une taille d'environ 16 000k et les grandes images ont une taille d'environ 160 000k. Je ne définis pas d'autorisations de fichiers et je laisse simplement cela se produire automatiquement. Quand je vais sur le site, je peux voir les vignettes, mais je ne peux pas voir les images en taille réelle et j'ai suivi le problème jusqu'aux autorisations de fichiers. Les vignettes ont des permissions rw-r-r et les plus grandes images ont des permissions rw-- - -. C'est à dire que le public n'a pas la permission de voir les grandes images. Je sauvegarde les grandes images avec le nom de l'original et j'enregistre les vignettes avec _thumbnail ajouté à la fin. Pourquoi les autorisations des grandes images seraient-elles différentes si elles étaient à la fois téléchargées et redimensionnées par le même script et si je ne définissais pas d'autorisations de fichier? Est-ce que la taille a quelque chose à voir avec ça? Je rencontre uniquement ce problème lorsque je télécharge des images sur le serveur de production, et non lorsque je travaille sur ma machine locale. Merci Andrew

+0

16M pour un pouce et 160M pour une image en taille réelle ?! Prenez-vous des photos de galaxies extérieures? –

+0

Eh bien, je n'utilise que gd pour redimensionner les images jpeg normales. Comment suggérez-vous que je les rends plus petits? – andrew

Répondre

2

Comment redimensionnez-vous les images? Utilisez-vous un programme externe?

Ceci est juste une supposition, mais ici va

  1. téléchargements admin image.jpg via votre formulaire
  2. script php écritures téléchargé image.jpg pour le système de fichiers comme rw- --- --- (600)
  3. script php appelle programme resizer d'image pour créer image_thumbnail.jpg
  4. Image Resizer écrit image_thumbnail.jpg comme rw- r-- r-- (644)
  5. script php appelle programme resizer d'image pour créer l'image redimensionnée .jpg
  6. Image Resizer image.jpg écrase, mais laisse les permissions que rw- --- --- (600)

Pour tester cette théorie, commenter la partie où il redimensionne image.jpg à 600px, et puis vérifiez les autorisations de l'image initialement téléchargée. S'ils ont 600 ans, alors il y a votre problème. Quoiqu'il en soit, un simple chmod résoudra votre problème.

+0

J'utilise mon propre resizer d'image qui prend simplement l'image et la redimensionne à la taille de la vignette et la plus grande taille et les enregistre dans un fichier sur le serveur. Souhaitez-vous définir des autorisations de fichier lorsque vous enregistrez le fichier sur le serveur pour chaque fichier? – andrew

+0

oui, je voudrais écrire le fichier, fermez-le et puis chmod pour être ce que je voulais – karoberts

0

Je vous suggère de regarder d'abord votre fichier php.ini

;Maximum allowed size for uploaded files.
upload_max_filesize = 10M
;Maximum size of POST data that PHP will accept.
post_max_size = 10M

Les paramètres par défaut seraient 2M. Vous devrez le changer comme je l'ai mentionné ici. Si cela ne fonctionne toujours pas, veuillez revenir.

+0

Je ne peux pas accéder à php.ini mais je pourrais définir ces valeurs pour la durée du script non? En utilisant ini_set? – andrew

+0

ini_get ('post_max_size') et ini_get ('upload_max_filesize') devraient vous permettre de voir les valeurs. – Shiv

+0

Je ne pense pas qu'il soit possible de changer upload_max_filesize en utilisant ini_set. Les valeurs sont actuellement La taille de post_max est 8M La taille de fichier upload max est: 2M.De plus, il était encore en train de télécharger le fichier, c'est juste que l'autorisation changeait pour l'image plus grande. Je pourrais juste faire ce que Karoberts a suggéré et fichiers chmod et voir ça aide. – andrew