Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 04/11/2011, 15h07   #1
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Par défaut Fonction unzip à adapter

Bonjour,

J'essaie d'appliquer une fonction pour décompresser un zip. ça me retourne un message d'erreur. all to undefined function zip_open()
C'est un vieux code que j'ai récupérer et j'ai l'impression qu'il ne fonctionne pas sous php 5.2
Je ne sais pas par ou commencer, si quelqu'un pouvait m'orienter, ça serait bien sympa.

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
function unzip($file, $path='', $effacer_zip=false){
	if(!file_exists($file)){
		echo "Le fichier ".$file." n'existe pas <br />";
		exit;
	}
	// Cas d'un serveur Windows = on transforme notre chemin de fichier
	if(isset($_SERVER['SystemRoot'])){
		$file_array=explode("/",$file);
		// on vérifie si on utilise la règle de nommage windows ou pas (si on a un array en faisant un explode de /
		if(count($file_array)>1){
 
			$dossier_en_cours=getcwd();
			$dossier_en_cours_array=explode('\\',$dossier_en_cours);
 
			$compteur_montant=0;
			for($i=0; $i<count($file_array); $i++){
				if($file_array[$i]==".."){
					// on doit remonter de $compteur_montant niveaux
					$compteur_montant++;
				}else{
					$file_array_final[]=$file_array[$i];
				}
			}
			$file="";
			for($i=0; $i<count($dossier_en_cours_array)-$compteur_montant; $i++){
				$file.=$dossier_en_cours_array[$i]."\\";
			}
			for($i=0; $i<count($file_array_final); $i++){
				$file.=$file_array_final[$i];
				// on ajoute le \ si et seulement si on est encore dans les dossiers
				if($i<count($file_array_final)-1){
					$file.="\\";
				}
			}
		}
	}
	$tab_liste_fichiers = array(); //Initialisation
	if(!is_file($file)){
		echo "le fichier zip n'est pas un fichier valide ou n'existe pas<br />".$file;
		return false;
	}else{
		$zip = zip_open($file);
		if ($zip){
			//Pour chaque fichier contenu dans le fichier zip
			while ($zip_entry = zip_read($zip)){
				if (zip_entry_filesize($zip_entry) > 0){
					$complete_path = $path.dirname(zip_entry_name($zip_entry));
					/*On supprime les éventuels caractères spéciaux et majuscules*/
 
					$nom_fichier = zip_entry_name($zip_entry);
					//$nom_fichier = strtr($nom_fichier,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
					//$nom_fichier = strtolower($nom_fichier);
					//$nom_fichier = ereg_replace('[^a-zA-Z0-9.]','_',$nom_fichier);
 
					/*On ajoute le nom du fichier dans le tableau*/
					array_push($tab_liste_fichiers,$nom_fichier);
 
					$complete_name = $path.$nom_fichier; //Nom et chemin de destination
 
					if(!file_exists($complete_path)){
						$tmp = '';
						foreach(explode('/',$complete_path) AS $k){
							$tmp .= $k.'/';
 
							if(!file_exists($tmp)){
								mkdir($tmp, 0755);
							}
						}
					}
 
					/*On extrait le fichier*/
					if (zip_entry_open($zip, $zip_entry, "r")){
						$fd = fopen($complete_name, 'w');
						print "Taille du fichier $complete_name : ".zip_entry_filesize($zip_entry)."<br>\n";
						fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
						fclose($fd);
						zip_entry_close($zip_entry);
					}
				}
			}
			zip_close($zip);
			/*On efface éventuellement le fichier zip d'origine*/
			if ($effacer_zip === true){
				unlink($file);
			}
		}
		return $tab_liste_fichiers;
	}// Fin fichier présent ok
}// fin de la fonction unzip
Merci d'avance et bonne journée,
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 15h21   #2
Membre confirmé
 
Inscription : décembre 2005
Messages : 265
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : décembre 2005
Messages : 265
Points : 232
Points : 232
Pour commencer, en général le meilleur endroit c'est la doc de la fonction
Sur cette page, tu peux voir les pré-requis :
Citation:
(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PECL zip >= 1.0.0)
Donc première vérification : as-tu PHP >= 5.2 ?
Si c'est le cas, est-ce que l'extension Zip est activée ?
Palca est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/11/2011, 15h59   #3
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Merci pour la doc, je vais regarder.
je suis sous
Version Apache 2.2.15
Version PHP 5.2.13
Je n'ai pas activé l'extension Zip. Je vais essayer de trouver comment on fait.

Merci en tout cas
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 16h52   #4
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Je cherche depuis tout à l'heure mais je ne comprends pas ce que veut dire "activer l'extension zip". Si quelqu'un pouvait m'expliquer, ça m'aiderait beaucoup.

Merci...
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 17h11   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Pierrea4564 Voir le message
Je cherche depuis tout à l'heure mais je ne comprends pas ce que veut dire "activer l'extension zip". Si quelqu'un pouvait m'expliquer, ça m'aiderait beaucoup.

Merci...
tout est dans la doc ...
http://www.php.net/manual/fr/install...extensions.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 15h26   #6
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Bonjour,

Je reviens au sujet de ma fonction unzip.
J'ai bien compris qu'il fallait que j'installe l'extension zip pecl.
Seulement, d'après ce que je lis sur internet, il faut récupérer l'extension avec ce code :
wget http://pecl.php.net/get/zip
Seulement, désolé d'avance pour cette question qui est surement très nulle pour un pro, mais ou est ce que je dois mettre cette ligne de code.

Je patauge complètement
merci d'avance
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 15h41   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
pas besoin de PECL l’extension est en natif depuis longtemps, t'as le php_zip.dll dans ton dossier des extensions ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h23   #8
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Je suis sous Linux
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h25   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Pierrea4564 Voir le message
Je suis sous Linux
quelle distrib ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h33   #10
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
debian
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h41   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
t'as une vielle version ? parce que par défaut elle y est, que donne une php -m
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h50   #12
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Non, la version n'est pas vieille je pense. Mais c'est quoi une php -m?
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h52   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Pierrea4564 Voir le message
Non, la version n'est pas vieille je pense. Mais c'est quoi une php -m?
en commande tu tapes php -m
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 17h09   #14
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
le php -m ne fonctionne pas, je pense que je m'y prends mal. Mais en attendant de trouver, voici ce que donne une phpinfo
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Configure Command	 './configure' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-magic-quotes' '--enable-mbstring' '--enable-pdo=shared' '--enable-soap' '--enable-sockets' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-curl=/opt/curlssl/' '--with-freetype-dir=/usr' '--with-gd' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libexpat-dir=/usr' '--with-libxml-dir=/opt/xml2' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mhash=/opt/mhash/' '--with-mime-magic' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli=/usr/bin/mysql_config' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pdo-mysql=shared' '--with-pdo-sqlite=shared' '--with-pic' '--with-png-dir=/usr' '--with-sqlite=shared' '--with-tidy=/opt/tidy/' '--with-ttf' '--with-xmlrpc' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/usr'
Server API	Apache 2.0 Handler
Virtual Directory Support	disabled
Configuration File (php.ini) Path	/usr/local/lib
Loaded Configuration File	/usr/local/lib/php.ini
Scan this dir for additional .ini files	(none)
additional .ini files parsed	(none)
PHP API	20041225
PHP Extension	20060613
Zend Extension	220060519
Debug Build	no
Thread Safety	disabled
Zend Memory Manager	enabled
IPv6 Support	enabled
Registered PHP Streams	https, ftps, compress.zlib, php, file, data, http, ftp
Registered Stream Socket Transports	tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters	zlib.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed
 
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 17h12   #15
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
c'est quelle version de Debian que t'as ? t'as fait une install spécial ou natif pour installer PHP ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 17h25   #16
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
tout est natif, je n'ai rien installé. Par contre, je ne sais pas comment trouver la version de debian.
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 17h33   #17
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
y'a jamais eu de 5.2.13 pour Debian
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 09h50   #18
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
En faisant des recherche sur le serveur, voila ce que j'ai trouvé.
Je me suis donc peut être trompé. La distrib serait plutôt unix, non?

Server Version: Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.13
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 10h52   #19
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Pierrea4564 Voir le message
La distrib serait plutôt unix, non?
mais non


bref fait un

__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 11h59   #20
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Déjà merci beaucoup pour ton aide.
J'y vois beaucoup plus clair depuis ce matin, et je sens que je suis pas loin d'arriver à installer cette extension.

Alors voici quelques infos :
En faisant un cat /proc/version :

Linux version 2.6.18-194.3.1.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Thu May 13 13:08:30 EDT 2010

En faisant un php -m
[PHP Modules]
bcmath
calendar
ctype
curl
date
dom
exif
filter
ftp
gd
hash
iconv
imap
json
libxml
mbstring
mcrypt
mhash
mime_magic
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
posix
Reflection
session
SimpleXML
soap
sockets
SPL
SQLite
standard
tidy
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
xsl
zlib

Je me sers maintenant de ce tuto (2.1.2.2. Dynamique) :
http://julp.developpez.com/php/zip/

Seulement, quand je fais cette commande (j'ai uplaoder sur mon ftp l'extension déjà dézipée dans le dossier php):
cd /home/wwwlogit/php
phpize
./configure
make
make install

Voila ce que j'ai :
root@web [~]# cd /home/wwwlogit/php
root@web [/home/wwwlogit/php]# phpize
Cannot find config.m4.
Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module

root@web [/home/wwwlogit/php]# ./configure
-bash: ./configure: Aucun fichier ou répertoire de ce type
root@web [/home/wwwlogit/php]# make
make: *** Pas de cibles spécifiées et aucun makefile n'a été trouvé. Arrêt.
root@web [/home/wwwlogit/php]# make install
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h09.


 
 
 
 
Partenaires

Hébergement Web