Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/05/2006, 10h20   #1
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
Par défaut [Librairies] Problème avec gzopen()

Bonjour à tous,

Voici mon script, il me paraît tout simple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
$message = "Un string de la mort qui tue, comme d\'hab un truc sans intérêt.";
 
if(file_exists("alliance.gz")){//suppression du fichier
unlink("alliance.gz");
}
 
$test = touch("alliance.gz");//Création du fichier gz
if(test){
echo "nice \n";
}
else{
echo "failed \n";
}
$filepointer = gzopen("alliance.gz", "W"); //ouverture en écriture du fichier
 
echo "file pointer done\n";
 
$compressedmessage = gzdeflate($message);//compression
 
echo "compressed message \n";
 
gzwrite($filepointer, $compressedmessage);//écriture sur le fichier
 
echo "writing done !\n";
 
?>
J'aimerais enregistrer un string compressé dans un fichier .gz. Le problème vient à l'exécution :

Citation:
nice
Warning: gzopen(alliance.gz): failed to open stream: No such file or directory in /xxxpathxxx/testcgi/testgz.php on line 19
file pointer done compressed message
Warning: gzwrite(): supplied argument is not a valid stream resource in /xxxpathxxx/testcgi/testgz.php on line 29
writing done !
Pour une raison que je comprend pas, le fichier est bien créé mais la fonction gzopen() n'arrive pas à y accéder. Le mod du fichier est 664 sur le FTP et mon hébergeur interdit de changer le mod d'un fichier (mais les dossiers c'est bon...)

Qui a une idée de la provenance de l'erreur?

Merci beaucoup d'avance...
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 10h58   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Remplace
par

Tu es sous windows ?
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 14h44   #3
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
Je suis sous windows xp, effectivement, mais mon hébergeur tourne sur unix...

Merci pour la petite erreur, mais comme je le pensais ça n'a rien changé.

J'avais vérifié que le fichier .gz était bien créé sur le FTP.

J'ai modifié mon script pour faire un test :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$message = "Un string de la mort qui tue, comme d\'hab un truc sans intérêt.";
if(file_exists("./alliance.txt")){//suppression du fichier
   unlink("./alliance.txt");
}
$test = touch("./alliance.txt");//Création du fichier
if($test){
   echo "nice \n";
}
else{
   echo "failed \n";
}
$filepointer = fopen("./alliance.txt", "W"); //ouverture en écriture du fichier
echo "file pointer done\n";
fwrite($filepointer, $message);//écriture sur le fichier
echo "writing done !\n";
et même avec une fonction fopen et fwrite classique ça marche pas, le message d'erreur reste le même. Le fichier est créé sur le FTP mais il n'est pas ouvert correctement... Je capte rien du tout !
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 15h04   #4
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
quel est le résultat du script que tu viens de poster ?
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 15h31   #5
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
Citation:
nice
Warning: fopen(./alliance.txt): failed to open stream: No such file or directory in /xxxxxxxxxxxxxx/testcgi/testgz.php on line 14
file pointer done
Warning: fwrite(): supplied argument is not a valid stream resource in /xxxxxxxxxxxxxxxxx/testcgi/testgz.php on line 16
writing done !
J'ai vérifié, le dossier dans lequel je suis (testcgi) est en 777 comme mod.
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 15h50   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Remplace ceci :
Code :
$filepointer = fopen("./alliance.txt", "W"); //ouverture en écriture du fichier
par ceci et dis-nous ce que ça donne :
Code :
1
2
3
clearstatcache();
var_dump(file_exists("./alliance.txt"));
$filepointer = fopen("./alliance.txt", "W"); //ouverture en écriture du fichier
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 18h39   #7
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
la réponse du serveur n'est pas très encourageante :

Citation:
nice bool(true)
Warning: fopen(./alliance.txt): failed to open stream: No such file or directory in /xxxxxxxxxxxxx/testcgi/testgz.php on line 16
file pointer done
Warning: fwrite(): supplied argument is not a valid stream resource in /xxxxxxxxxxxxxxxxxxx/testcgi/testgz.php on line 19
writing done !
Le pire c'est que des fonctions comme image_jpeg() ou image_png() arrivent parfaitement à créer des images sur mon FTP. C'est mon dossier qui est maudit? Je dois dancer nu sous un arbre enrobé de jambon? (le mail d'insulte à mon hébergeur serait également une idée...)
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 23h27   #8
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
autre solution :
$filepointer = fopen(dirname(__FILE__)."/alliance.txt", "w");
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2006, 18h23   #9
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
Ta solution ne marche pas non plus, pour une raison que je comprend pas le serveur refuse tout accès en écriture sur le FTP avec fopen() ou gzopen() (alors qu' image_jpeg() marche par exemple).

En fait, j'ai pensé à un truc qui me permettrait d'avoir en même temps accès à bzopen() et à l'accès en écriture (bien que ce soit pas vraiment bien d'éviter la résolution de mon problème) : mettre un script qui fait la conversion bz to gz sur un hébergement free puis faire l'appel au fichier gz depuis mon hébergement. J'ai évité les deux problèmes à la fois, le problème d'écriture et le problème de bzopen()...

Par contre, petite question : comment faire en php qui est une programmation de scripts pour avoir un lancement automatique d'un script à une heure précise? Je doute fortement qu'il y ait des moyens comme des timers pour le faire. Est-ce qu'il y a un moyen d'avoir un truc du genre?

merci d'avance
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2006, 09h03   #10
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
http://matthieu.developpez.com/execution_periodique/
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h33.


 
 
 
 
Partenaires

Hébergement Web