Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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/05/2005, 17h46   #1
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
Par défaut Equivalent de exec ("rm ...") en plpgsql

Bonjour,

Je voudais savoir s'il est possible de declencher une suppressio de fichier sur une serveur au sein d'une procédure stockée.

C'est pas facile facile à trouver comme info donc je galere un minimum et je sais que certains d'entres vous sont experts dans le domaine.

Bonne soirée a tous.
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2005, 17h55   #2
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
Humm ca doit etre possible mais pas en plpgsql, mais plutot en untrusted comme plperlu, je n'ai pas tester mais de tete ca pourrait donner ca :

Code :
1
2
3
4
5
6
 
CREATE OR REPLACE FUNCTION supprimefichier(text) RETURNS int2
AS $BODY$
 unlink($1);
 RETURN 0;
$BODY$ LANGUAGE 'plperlu' VOLATILE;
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2005, 09h29   #3
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
ok, je te remercie, je vais vori ca des que j'auras le temps.
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 10h14   #4
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
Desole pour la longue periode avant le test.

J'ai donc ceci d'un coté
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
CREATE OR REPLACE FUNCTION deleteobjet(int4)
  RETURNS int4 AS
$BODY$
DECLARE identifiant ALIAS FOR $1;
DECLARE urlfichier varchar(150);
BEGIN
    ...
    urlfichier := 'c:/wamp/www/NEWAEF/img/chargimages/objets/' || identifiant || 'a.jpg';
    perform deletefichier(urlfichier);
    RETURN 0;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
et ceci egalement

Code :
1
2
3
4
5
6
7
8
 
CREATE OR REPLACE FUNCTION deletefichier(text)
  RETURNS int2 AS
$BODY$
 unlink($1);
 RETURN 0;
$BODY$
  LANGUAGE 'plperl' VOLATILE;
Comme vosu pouvez le voir, je l'ai mis en plperl car je n'ai aps plperlu et je n'arrive pas à l'activer.
Lorsque je lance un select de ma premiere procedure, il me retourne 0 mais n'efface pas le fichier correspondant.
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 10h16   #5
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
C'est normal, le module perl est en mode protégé, alors que perlu permet de réaliser des actions "sensibles" comme un unlink...
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 10h21   #6
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
ah d'accord.

bon ben, je suis pas dans le ... moi !

Est ce possible en python ou en dcl ?

je suis chiant hein ?
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 10h29   #7
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
J'ai enfin reussi à changer le mot de passe super utilisateur.

donc j'ai peu faire un createlang avec perlu.

Je vais donc tester ta premiere PS.

Merci
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 10h47   #8
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
la fonction semble marcher car je n'ai aucun message d'erreur mais mon fichier est toujours la.

J'ai testé également avec pg_file_unlink mais il me renvoie false. j'en deduit donc qu'il ne trouve pas le fichier.

Pfff !!
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 10h54   #9
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
tu es sous windows ou linux ?
pense a mettre le chemin complet ou joue avec les . et / ( ou \)
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 11h00   #10
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
tu peux essayer un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE OR REPLACE FUNCTION supprimefichier(text) RETURNS int2
AS $BODY$
 IF(unlink($1)) 
 {
   RETURN 1; 
  }
 else 
 {
   RETURN 0;
 } 
$BODY$ LANGUAGE 'plperlu' VOLATILE;
ca te renvoi 0 si ca marche pas.

Apparemment tu es sous windows, regarde si tu as bien les droits de delete sur le compte postgres (de windows) et essaye de faire un truc du genre :
c://wamp//www//NEWAEF
ou
c:\wamp\www\NEWAEF
ou encore
c:\\wamp\\www\\NEWAEF

je sais pas trop sous windows
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 12h02   #11
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
oui oui, il me renvoie bien 0. Ca foire !!

je ne comprends pas ce que tu me demande concernant les droits en delete de l'utilisateur postgres "sous windows" ?

Mais c'est pas grave. Je vais effacer mes fichiers en PHP par derriere.

Par contre, j'essaie galement avec pg_file_unlink mais celle ci est declarée comm telle
Code :
1
2
3
4
CREATE OR REPLACE FUNCTION pg_file_unlink(text)
  RETURNS bool AS
'$libdir/admin', 'pg_file_unlink'
  LANGUAGE 'c' VOLATILE STRICT;
J'avoue ne pas comprendre d'ou vient libdir et ce que fout le repertoir admin ici.

Je laisse tomber. Non pas par depit mais sinon je vais passer un temps fou et j'ai d'autres choses qui m'attendent.

merci de ton aide. C'est super sympa
Tchinkatchuk 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 06h48.


 
 
 
 
Partenaires

Hébergement Web