Uso de system(), pasthru() y similares

speckados
06 de Julio del 2004
Estoy haciendo un modulopar oscommerce que por necesidad necesita hacer
una llamada a un fichero de lotes, que a su vez hace una llamada a java.

Desde el shell ejecuto, dentro de cualquier directorio (es una sola
linea):

shel$ java -cp /home/shopping/www/tpv/tpv.zip CrURLtpv
/home/shopping/www/tpv $* idpedido:1059236373 importe:100.25
moneda:XEU idioma:esp mailcomp:[email protected]

o:

shell $ path/crURLtpv idpedido:333334 importe:1000.00 moneda:XEU idioma:esp
mailcomp:[email protected]

Contenido del crURLtpv "java -cp /home/shopping/www/tpv/tpv.zip
CrURLtpv /home/shopping/www/tpv $*"

Pues bien cuando lo intento ejecutar desde php, con el siguiente codigo,
me devuelve eror 126 o 127.

En los casos correctos, devuleve un string con una URL, los parametros
pasado, y una firma.

Esto es debido a alguna configuracion del php.ini, permisos? Safe mode off.

Codigo ejemplo en PHP
$idpedido = time();
$moneda ="XEU";
$importe ="100.25";
$idioma = "esp";
$mailcomp = "[email protected]";

//$paramets = $numpedido ." ". $importe ." ".$fecha ." ". $moneda;
$parametros = "idpedido:".$idpedido." importe:".$importe."
moneda:".$moneda." idioma:".$idioma." mailcomp:".$mailcomp;

$comando= "/home/shopping/www/tpv/crURLtpv ".$parametros ;

$url = System($comando,$resultado);

?>

<BR>FORMULARIO A ENVIAR
<br>IMPORTE=<? echo $importe ?>
<br>ID=<? echo $idpedido ?>
<br>MONEDA=<? echo $moneda ?>
<br>URL= <? echo $url ?>
<br>RESULTADO= <? echo $resultado ?> // Me devuelve el error 126 o 127
segun las pruebas que haga.
<br>PARAMETROS= <? echo $comando ?>

Un cordial saludo.


Joserra
06 de Julio del 2004
Hola a todos:

Ya he conseguido poner en marcha la pasarela de pago de La Caixa, el proceso es el
siguiente,

Editar el fichero CrURLtpv.sh

en la linea en la cual se ejecuta java, hay que ejecutar java insertando el directorio absoluto,
tened en cuenta que cada uno y según el sistema con el que trabaje tendrá que
cambiar el directorio, por el directorio donde lo tenga instalado

#!/bin/sh

MYCLASSPATH=$1:$CLASSPATH$

/usr/lib/java/jre/bin/java -classpath $MYCLASSPATH CrURLtpv $# [email protected]

RET=$?
MYCLASSPATH=
exit $RET

También debeis ejecutar el fichero CrURLtpv.sh de forma absoluta

/usr/local/tpv/CrURLtpv.sh /usr/local/tpv/tpv.jar /usr/local/tpv/tpv.cnf
idpedido:1088065215 importe:180.94 moneda:EUR idioma:esp

y desde PHP

$comando="/usr/local/tpv/CrURLtpv.sh /usr/local/tpv/tpv.jar /usr/local/tpv/tpv.cnf
idpedido:1088065215 importe:180.94 moneda:EUR idioma:esp";

$resultado=shell_exec($comando);


Espero que os sirva de ayuda...

Por último indicar que la función PHP funciona correctamente, no funcina porque el manual
de la pasarela de pago de La Caixa se salta pasos fundamentales de instalación,
dificultando así la instalación...

Un saludo y suerte

José Ramón Cabrejas Jiménez
[email protected]