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 14/12/2006, 16h11   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 2
Points : 0
Points : 0
Par défaut déclencheur pl/perlu : pb d'utilisation d'exec et unlink

Bonjour,

Je suis sous mandriva 2007, avec postgresql 8.1.5,
Je n'arrive pas à exécuter les commandes 'unlink' et 'exec' depuis ma fonction trigger .
Le 'unlink()' est exécuté mais ne fonctionne pas (fichier non effacé).
La commande 'exec()' fait planter postgresql.

J'ai pourtant les droits de super-utilisateur.

Voici mon code :
Code :
1
2
3
4
5
CREATE OR REPLACE FUNCTION updatehtml3_trigger() RETURNS TRIGGER AS $html_trigger$
     my $file = '/home/aeffacer';
     unlink(aeffacer);
    RETURN; 
$html_trigger$ LANGUAGE plperlu;
ou encore (update_web est un exécutable):
Code :
1
2
3
4
5
6
 
CREATE OR REPLACE FUNCTION updatehtml3_trigger() RETURNS TRIGGER AS $html_trigger$
     my @web2=("1", "0");
     exec('/home/update_web',@web);
    RETURN; 
$html_trigger$ LANGUAGE plperlu;
Par contre une fonction comme 'open' s'exécute très bien.

Quelqu'un pourrait-il m'orienter ?
Merci
ags_squale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2006, 11h10   #2
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Tu as probablement installée pl/perl comme un langage 'trusted', cad en gros qui ne peut interagir avec l'environnement sur lequel tourne la machine (typiquement effacer des fichiers ). Ceci pour des raisons de sécurité.

Regarde de ce coté la : http://www.postgresql.org/docs/8.1/s...l-trusted.html

++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2006, 09h11   #3
Invité de passage
 
Inscription : décembre 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 2
Points : 0
Points : 0
Merci de me répondre !!

Mais j'ai effectivement installé pl/perl en langage untrusted cad comme c'est indiqué et d'ailleurs ce script (ci-dessous) fonctionne très bien, je n'ai pas de messages d'erreur :
Code :
1
2
3
4
5
6
7
8
CREATE FUNCTION badfunc() RETURNS integer AS $$
    my $tmpfile = "/tmp/badfile";
    open my $fh, '>', $tmpfile
        OR elog(ERROR, qq{Could NOT open the file "$tmpfile": $!});
    print $fh "Testing writing to a file\n";
    close $fh OR elog(ERROR, qq{Could NOT close the file "$tmpfile": $!});
    RETURN 1;
$$ LANGUAGE plperl;
C'est seulement les fonctions unlink et exec qui ne vont pas.

Si tu as une autre idée, elle est la bienvenue
Merci qd même.
ags_squale 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 23h57.


 
 
 
 
Partenaires

Hébergement Web