2009-09-13 6 views
0

Je crée une image dynamiquement en utilisant php. L'image est en cours de création si j'entre et crée le fichier en premier. Toutefois, si je ne crée pas le fichier manuellement, j'obtiens l'erreur suivante.Problème lors de la sauvegarde de l'image

Attention: imagegif() [function.imagegif]: impossible à ouvrir 'filename2.png' pour l'écriture sur la ligne 144 /www/vhosts/yourraceresults.com/htdocs/trial/TextToImage.inc.php

Exemple:

public function SaveTextAsPng($fontSize, $x, $y, $textContent, $fileName='image'){ 
    imagestring($this->image, $fontSize, $x, $y, $textContent, $this->text_color); 
    return imagepng($this->image, "/www/vhosts/yourraceresults.com/htdocs/admin/trial/images/".$fileName.".png"); 
} 

$ textToImage-> SaveTextAsPng (10, 11,11, 'fakeinfo', 'filename2');

+0

Cela ressemble à un problème avec les autorisations. Pouvez-vous écrire un exemple de ce que vous essayez de faire? – Vertigo

+0

Êtes-vous sur un hôte partagé ou votre propre serveur privé/dédié? – jimyi

Répondre

1

Soit le dossier de sortie n'existe pas (auquel cas vous devez le créer), soit vous n'avez pas d'autorisation d'écriture dans le dossier de sortie.Pour résoudre ce problème:

  • Si vous utilisez un shell:

    chmod 777 /www/vhosts/yourraceresults.com/htdocs/trial

  • Si vous utilisez un client FTP :

    Cliquez droit sur le dossier "trial", recherchez quelque chose appelé "chmod", "rights", "permissions" (éventuellement dans "properties"), puis donnez-lui toutes les permissions ou entrez la valeur chmod 777

+0

J'ai fait le premier. La même erreur apparaît. – Joe

+0

/www/vhosts/yourraceresults.com/htdocs/trial est le répertoire où filename2.png est écrit, non? Sinon, réessayez dans le répertoire approprié. –

+0

Je l'ai fait pour le répertoire apporpriate que j'ai changé le chemin d'accès à /www/vhosts/yourraceresults.com/htdocs/trial/images pour ne rien mettre en danger – Joe

0

Avez-vous des droits correctement définis pour le répertoire de sortie? Je pense que votre serveur Web (et php avec) ne peut pas écrire dans le dossier de destination.

1

Il semble que votre utilisateur Web (apache, www, ...) n'a pas d'autorisations d'écriture dans le dossier dans lequel vous essayez d'écrire. Ou, si le fichier existe déjà, il n'a pas d'autorisations d'écriture pour ce fichier.

Modifier: Modification des autorisations

Supposé vous êtes sur un Linux comme système avec un apache serveur web, vous devez d'abord savoir que quel utilisateur de votre serveur Web est en cours d'exécution. Vous devez obtenir un shell de commande sur le serveur (ssh) et vous pouvez probablement voir l'utilisateur-serveur Web en tapant la commande suivante:

$ ps aux | grep httpd 

Dans la liste, vous verrez tous les processus apache en cours d'exécution avec le nom d'utilisateur la première colonne. Disons que l'utilisateur web est apache, vous devez maintenant donner des permissions d'écriture apache dans ce répertoire. Vous pouvez le faire en changeant le groupe en apache et en donnant des permissions d'écriture à ce groupe ou en changeant la propriété du répertoire en apache. LET'S que vous voulez changer le groupe:

$ chgrp apache /www/vhosts/yourraceresults.com/htdocs/trial 

Donnez le propriétaire et les utilisateurs du groupe (apache) écrire des autorisations:

$ chmod 775 /www/vhosts/yourraceresults.com/htdocs/trial 

disclamer: c'est une solution rapide, mais je Je ne sais pas grand-chose sur la sécurité, les commentaires sont les bienvenus!

+0

D'accord, comment puis-je le changer, je suis assez faible dans les autorisations. – Joe

+0

À l'aide de FTP, modifiez les autorisations sur 755 ou utilisez SSH à l'aide de chmod. –

0

Il semble que votre script ait besoin d'autorisations en écriture sur ce répertoire. Un moyen facile de modifier ces autorisations est de se connecter via FTP et de modifier les autorisations de votre client FTP. La plupart (au moins, des quelques que j'ai essayé) les clients FTP offrent une option lorsque vous faites un clic droit sur un dossier appelé "Permissions" ou "File Attributes" (FileZilla) ou quelque chose comme ça. Il devrait afficher une boîte de dialogue avec des cases à cocher différentes autorisations; assurez-vous de donner au moins la permission au propriétaire d'écrire. Si vous êtes sur un hôte * nix, vous devriez pouvoir accéder au répertoire et lancer la commande chmod 755. pour changer les permissions.

EDIT: chmod 777. vous donnera le plus de permissions, si 755 ne fonctionne pas.

+0

Cela ne fonctionnera probablement pas. Dans la plupart des environnements de partage, l'utilisateur unix qui exécute le serveur Web et l'utilisateur fournissant les fichiers sont différents. Vous devez donc donner des autorisations complètes, sinon l'utilisateur du serveur Web n'a toujours pas le droit d'écrire dans le répertoire. –

Questions connexes