Categories > [old] TbsOoo & TinyDoc >

Warning: shell_exec() [function.shell-exec]: Unable to execute 'zip -h'

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: danypoup
Date: 2007-01-12
Time: 14:36

Warning: shell_exec() [function.shell-exec]: Unable to execute 'zip -h'

Dans la continuité du post précédent, je poursuis mes tests.

Je rappel ici la configuration utilisé :
- WinXP/SP2, IIS, PHP 4.4.4
- tbsooo 0.79
- tbs 2.05.8

Dans ce contexte, j'utilise l'exemple fournit avec tbsooo : tbsooo_us_examples_hello.php.

Son code se présente ainsi :
<?php
include_once('../tbs_class.php');
include_once('../tbsooo_class.php');

// datas
$x = 'Hello World';

// instantiate a TBS OOo class
$OOo = new clsTinyButStrongOOo;

// setting the object
$OOo->SetZipBinary('zip',true);
$OOo->SetUnzipBinary('unzip',true);
$OOo->SetProcessDir('c:/tmp');

// create a new openoffice document from the template with an unique id
$OOo->NewDocFromTpl('tbsooo_us_examples_hello.sxw');

// merge data with openoffice file named 'content.xml'
$OOo->LoadXmlFromDoc('content.xml');
$OOo->SaveXmlToDoc();

// display
header('Content-type: '.$OOo->GetMimetypeDoc());
header('Content-Length: '.filesize($OOo->GetPathnameDoc()));
$OOo->FlushDoc();
//copy($OOo->GetPathnameDoc(), 'c:/tmp/fichier.sxw');
$OOo->RemoveDoc();
?>

Vous remarquerez que je positionne le deuxième paramètre des fonctions SetZipBinary et SetUnzipBinary à true afin que ces fonctions vérifient la présence des programmes zip et unzip.

De fait, lorsque j'exécute ce programme, j'obtiens les messages suivants :

- le début de l'affichage :

Warning: shell_exec() [function.shell-exec]: Unable to execute 'zip -h' in c:\inetpub\wwwroot\phpooo\tbsooo\tbsooo_class.php on line 42

TinyButStrong Error (SetZipBinary method): Problem to execute the command : shell_exec('zip -h')

Warning: shell_exec() [function.shell-exec]: Unable to execute 'unzip -h' in c:\inetpub\wwwroot\phpooo\tbsooo\tbsooo_class.php on line 59

TinyButStrong Error (SetUnzipBinary method): Problem to execute the command : shell_exec('unzip -h')

Warning: exec() [function.exec]: Unable to fork [unzip c:/tmp/99f91b97bd44d907e1642ebe1bead7cf.sxw -d c:/tmp/99f91b97bd44d907e1642ebe1bead7cf content.xml] in c:\inetpub\wwwroot\phpooo\tbsooo\tbsooo_class.php on line 132

TinyButStrong Error (LoadXmlFromDoc method): File not found : c:/tmp/99f91b97bd44d907e1642ebe1bead7cf/content.xml

Warning: exec() [function.exec]: Unable to fork [zip -j -m c:/tmp/99f91b97bd44d907e1642ebe1bead7cf.sxw c:/tmp/99f91b97bd44d907e1642ebe1bead7cf/content.xml] in c:\inetpub\wwwroot\phpooo\tbsooo\tbsooo_class.php on line 208
PK¢V.3á¥19mimetypeapplication/vnd.sun.xml.writerPK¢V.3 content.xml¥UÏoÚ0¾ï¯ð|Ø-ÖKa@¥•VªDKµ‚´iÚÁuðæØ™íøï÷b'¡

- puis je vous épargne quelques ligns "cryptées" et enfin, la fin :-) :

Warning: shell_exec() [function.shell-exec]: Unable to execute 'zip -h' in c:\inetpub\wwwroot\phpooo\tbsooo\tbsooo_class.php on line 42

TinyButStrong Error (SetZipBinary method): Problem to execute the command : shell_exec('zip -h')

Warning: shell_exec() [function.shell-exec]: Unable to execute 'unzip -h' in c:\inetpub\wwwroot\phpooo\tbsooo\tbsooo_class.php on line 59

TinyButStrong Error (SetUnzipBinary method): Problem to execute the command : shell_exec('unzip -h')

Warning: exec() [function.exec]: Unable to fork [unzip c:/tmp/99f91b97bd44d907e1642ebe1bead7cf.sxw -d c:/tmp/99f91b97bd44d907e1642ebe1bead7cf content.xml] in c:\inetpub\wwwroot\phpooo\tbsooo\tbsooo_class.php on line 132

TinyButStrong Error (LoadXmlFromDoc method): File not found : c:/tmp/99f91b97bd44d907e1642ebe1bead7cf/content.xml

Warning: exec() [function.exec]: Unable to fork [zip -j -m c:/tmp/99f91b97bd44d907e1642ebe1bead7cf.sxw c:/tmp/99f91b97bd44d907e1642ebe1bead7cf/content.xml] in c:\inetpub\wwwroot\phpooo\tbsooo\tbsooo_class.php on line 208
PK¢V.3á¥19mimetypeapplication/vnd.sun.xml.writerPK¢V.3 content.xml¥UÏoÚ0¾ï¯ð|Ø-ÖKa@¥•VªDKµ‚´iÚÁuðæØ™íøï÷b'¡

Il semble donc que les programmes zip et unzip ne soient pas "accessibles" pour PHP.

Sachant que :
- dans le php.ini, safe_mode = off ;
- j'ai fait différents tests en mettant les chemins absolus vers ces exécutables dans les fonctions SetZipBinary et SetUnzipBinary ;
- le dossier contenant ces exécutables est renseigné dans la variable système PATH;
- j'ai modifié les droits d'accès au dossier pour que "toutlemonde" et "system" est un contrôle total (pas beau çà !!!) ;
- j'ai même copié ces exécutables dans le dossier c:\windows
...
rien n'y fait, j'ai toujours ces messages !!!!

Quelqu'un peut-il me dire ce que j'ai loupé ? Quelqu'un a-t-il réussi à faire fonctionner TBSOOO dans un ce même environnement (WinXP/SP2, IIS, PHP 4.4.4) ? Si oui, comment s'y est-il pris ?

J'espère ne pas abuser de votre temps avec toutes ces questions !

Merci par avance.
By: florent_49
Date: 2008-03-08
Time: 10:04

Re: Warning: shell_exec() [function.shell-exec]: Unable to execute 'zip -h'

j avais le meme probelem que toi et j ai essayer la commande sous dos qui ne marchait pas:
c:zip/zip/zip et c:zip/zip/unzip
alors qu il fallait taper
c:/zip/zip/zip et c:/zip/zip/unzip

depuis tout marche pour moi
bon courage
By: ori
Date: 2008-12-17
Time: 19:01

Re: Warning: shell_exec() [function.shell-exec]: Unable to execute 'zip -h'

Je suis exactement dan la mme galère. Impossible de faire marcher la classe dans un environnement window sous Wamp. Mon content.xml est 0 preuve que le unzip marche pas du tout <_<
By: ori
Date: 2008-12-17
Time: 20:31

Re: Warning: shell_exec() [function.shell-exec]: Unable to execute 'zip -h'

Bon finalement pour ceux qui ont galeré comme moi :

La solution pour les serveur windaube est de recup les fichier ...xn... (les executable zip et unzip doivent être présent !)

Le lien magique :

Unzip :
ftp://ftp.info-zip.org/pub/infozip/win32/unz552xn.exe
zip :
ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn.zip


mon code, avec des liens fixes et en true.

<?php
include_once('../tbs_class.php');
include_once('../tbsooo_class.php');

// datas
$x = 'Hello World';

// instantiate a TBS OOo class
$OOo = new clsTinyButStrongOOo;

// setting the object
$OOo->SetZipBinary('zip', true);
$OOo->SetUnzipBinary('C:\Drivers\bin\unzip\unzip', true);
$OOo->SetProcessDir('C:\Drivers\bin\zip', true);

// create a new openoffice document from the template with an unique id
$OOo->NewDocFromTpl('tbsooo_us_examples_hello.sxw');

// merge data with openoffice file named 'content.xml'
$OOo->LoadXmlFromDoc('content.xml');
$OOo->SaveXmlToDoc();

// display
header('Content-type: '.$OOo->GetMimetypeDoc());
header('Content-Length: '.filesize($OOo->GetPathnameDoc()));
$OOo->FlushDoc();
$OOo->RemoveDoc();
?>