[resolu]fonction shell_exec ? paybox

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J'utilise ubercart et j'ai installé le module paybox pour gérer mon paiement en ligne.
J'ai réussi à le paramétrer mais au moment de m'envoyer sur la page de paybox il me renvoie sur le panier avec un message d'erreur.

Après avoir examiné ce qui retourne ce message d'erreur, je me suis rendue compte que la fonction shell_exec posait problème (pour info le safe mode est désactivé chez mon hébergeur mutualisé OVH).

En gros dans la fonction qui appelle la page de paiement j'ai ceci

<?php
$path_bin
= variable_get('uc_paybox_cgi_path', '');
 
$chaine = implode($chaine); // j'ai des var récupéré au dessus dans un tableau de type $chaine['retour'], $chaine['langue']...
 
$output=$path_bin.$chaine;
 
$output=trim($output);
 
$output = shell_exec(trim($path_bin.$chaine));
 
$output = ereg_replace("Content-type: text/html\nCache-Control: no-cache, no-store\nPragma: no-cache", '', $output);
 
if (
$output) {
   return
$output;
  }
  else {
   
drupal_set_message(t('An error has occured during payment, please contact us : @output.', array('@output' => $output)), 'error');
   
//...
 
}
?>

Dans mon message de statut j'affiche $output.
Si je commente les 2 dernières
$output = shell_exec(trim($path_bin.$chaine));
$output = ereg_replace("Content-type: text/html\nCache-Control: no-cache, no-store\nPragma: no-cache", '', $output);

il me retourne le bon contenu

quelque chose comme

/my_path_to/cgi-bin/modulev3.cgi PBX_MODE=4 PBX_SITE=11111111 PBX_RANG=01 PBX_IDENTIFIANT=11111111 PBX_TOTAL=1300 PBX_CMD=40 PBX_PORTEUR=myemail@domaine.com PBX_DEVISE=978 PBX_RETOUR='montant:M;orderid:R;erreur:E;uniqueid:S;sign:K;' PBX_LANGUE=FRA PBX_EFFECTUE=http://www.mysite.com/cart/paybox/effectue PBX_REFUSE=http://www.mysite.com/cart/paybox/refuse PBX_ANNULE=http://www.mysite.com/cart/paybox/annule

j'ai essayé de simplifier en mettant

<?php
$output
=$path_bin.$chaine;
$output=trim($output);
$output=shell_exec($output);
?>

mais ça bloque toujours sur shell_exec qui me retourne un $output vide et me redirige sur mon panier, sinon j'arrive bien sur la page /cart/paybox/checkout

J'ai vu qu'en mode manuel il mettait

<?php
 
echo shell_exec($MOD.$PBX);
?>

(http://www.denisbillo.com/fr/paybox/installation-paybox.php)

Dans mon cas ça m'affiche bien la page /cart/paybox/checkout mais ça s'arrête là, toujours pas de page de paiement car il peut pas faire

<?php
 $output
= ereg_replace("Content-type: text/html\nCache-Control: no-cache, no-store\nPragma: no-cache", '', $output);
?>

Auriez-vous une idée?

Version de Drupal : 

Un doute si cette fonction pose probleme, pourquoi tu l'enleves pas tout simplement ?
Parce que de ce que je vois elle fait un bete trim qui est fait juste avant en php donc je veux bien que le trim du shell soit superieur a celui de php mais ca parait un peu faire double emploi, nan ?

en fait, j'ai fait différents tests, c'est pour ça que j'ai du m'emmêler dans mes explications.

A la base j'ai juste

<?php
 $output
= shell_exec(trim($path_bin.$chaine));
?>

et non pas

<?php
  $output
=trim($output); // je l'ai rajoute pour mes tests et j'ai oublié de le supprimer
 
$output = shell_exec(trim($path_bin.$chaine));
?>

D'après la doc php la fonction shell_exec permet de lancer des commandes.

Etant donné que j'utilises windows (bouhhh certains diront) je suis nulle en ligne de commande.

Donc je ne comprends pas ce que peut retourner le code suivant en ligne de commande
/my_path_to/cgi-bin/modulev3.cgi PBX_MODE=4 PBX_SITE=11111111 PBX_RANG=01 PBX_IDENTIFIANT=11111111 PBX_TOTAL=1300 PBX_CMD=40 PBX_PORTEUR=myemail@domaine.com PBX_DEVISE=978 PBX_RETOUR='montant:M;orderid:R;erreur:E;uniqueid:S;sign:K;' PBX_LANGUE=FRA PBX_EFFECTUE=http://www.mysite.com/cart/paybox/effectue PBX_REFUSE=http://www.mysite.com/cart/paybox/refuse PBX_ANNULE=http://www.mysite.com/cart/paybox/annule

Et surtout ce que cela peut retourner.

A priori ça devrait me retourner quelque chose contenant ça "Content-type: text/html\nCache-Control: no-cache, no-store\nPragma: no-cache" et d'autres choses mais moi rien.

Est ce que cela peut venir du module cgi?

J'ai bien suivi l'installation de paybox, mais j'ai hésité pour le téléchargement du module CGI, je suis sur un hébergement 240 plan d'OVH et j'ai choisi plateforme DEBIAN noyau 2.6.18 - libc 2.3.6 (d'après ce que j'ai pu voir sur différents forums) sur http://www1.paybox.com/telechargement_focus.aspx?cat=3

Ok bon moi aussi je me suis emmele :D
Donc en fait ton shell_Exec permet de lancer un appel au module cgi de paybox.
Par contre le "/my_path_to/" il sort ainsi ? Parce que ca ca veut dire qu'il faut le configurer vers le chemin ou tu as installe le module cgi nan ?
Je pense que le pb est le chemin du module cgi qui n'est pas correct d'ou l'erreur que te renvoies shell_Exec

Sinon tu peux debugguer shell_Exec et etre sur que ca marche via un ti script php genre

<?php
$output
= shell_exec('ls -lart');
echo
"<pre>$output</pre>";
?>

J'ai trouve ca mais je suppose que tu l'as deja lu
http://www.denisbillo.com/fr/paybox/installation-paybox.php
Donc a priori ca devrait marcher sur OVH

non je n'ai pas le chemin mypath mais bien celui ce mon serveur ovh vers mon cgi bin je l'ai changé par soucis de confidentialité.

Que fait la commande 'ls -lart' ?

Je vais essayer le débug et je vous tiens au courant.

bon la fonction me retourne ceci, ça veut dire quoi?

total 223
-rw-r--r--+  1 vitrines users   107 Sep 23 14:25 index.html
drwxr-xr-x+  3 vitrines users     6 Sep 23 14:25 memo
drwx---r-x+  2 vitrines users    35 Sep 24 09:24 includes
drwx---r-x+  3 vitrines users    54 Sep 24 09:25 misc
drwx---r-x+ 35 vitrines users    36 Sep 24 09:28 modules
drwx---r-x+  3 vitrines users     3 Sep 24 09:28 profiles
drwx---r-x+  2 vitrines users     7 Sep 24 09:28 scripts
drwx---r-x+  7 vitrines users     8 Sep 24 09:49 themes
-rw----r--+  1 vitrines users 43058 Sep 24 09:49 CHANGELOG.txt
-rw----r--+  1 vitrines users   222 Sep 24 09:49 CONTRIBUTORS.fr.txt
-rw----r--+  1 vitrines users   988 Sep 24 09:49 COPYRIGHT.txt
-rw----r--+  1 vitrines users   262 Sep 24 09:49 cron.php
-rw----r--+  1 vitrines users   980 Sep 24 09:49 index.php
-rw----r--+  1 vitrines users  1308 Sep 24 09:49 INSTALL.mysql.txt
-rw----r--+  1 vitrines users  1075 Sep 24 09:49 INSTALL.pgsql.txt
-rw----r--+  1 vitrines users 46926 Sep 24 09:49 install.php
-rw----r--+  1 vitrines users 15646 Sep 24 09:49 INSTALL.txt
-rw----r--+  1 vitrines users 14940 Sep 24 09:49 LICENSE.fr.txt
-rw----r--+  1 vitrines users 18048 Sep 24 09:49 LICENSE.txt
-rw----r--+  1 vitrines users  1924 Sep 24 09:49 MAINTAINERS.txt
-rw----r--+  1 vitrines users   673 Sep 24 09:49 README.fr.txt
-rw----r--+  1 vitrines users  1590 Sep 24 09:49 robots.txt
-rw----r--+  1 vitrines users     0 Sep 24 09:49 STATUS.fr.txt
-rw----r--+  1 vitrines users 25457 Sep 24 09:49 update.php
-rw----r--+  1 vitrines users  5002 Sep 24 09:49 UPGRADE.txt
-rw----r--+  1 vitrines users   352 Sep 24 09:49 xmlrpc.php
-rw-r--r--+  1 vitrines users  4020 Sep 25 10:36 .htaccess
-rw----r--+  1 vitrines users  5917 Oct 13 10:28 dewplayer.swf
-rw----r--+  1 vitrines users   328 Nov  5 14:15 phpinfo.php
drwx---r-x+  4 vitrines users     4 Nov  5 14:20 sites
-rw----r--+  1 vitrines users  1635 Dec  1 16:18 essai.php
drwxrwxrwx   8 vitrines users    15 Dec  1 16:24 atos
drwx---r-x+ 12 vitrines users    35 Jan  7 11:40 .
drwxr-xr-x+  2 vitrines users     3 Jan  7 11:45 cgi-bin
drwx---r-x+  6 vitrines users    11 Jan  7 12:13 ..

Bonsoir Selinav,
C'est peut être une question bête de ma part mais as tu vu qu'il existait un module Drupal exprès pour ca, en plus du module CGI fournit par Paybox?
http://drupal.org/project/uc_paybox
Je sors d'une installation Drupal-Ubercart-Paybox sur laquelle j'ai un peu galèré mais qui tourne au poil maintenant et grâce à la dernière maj de ce module.