[PHP] Problème avec escapeshellarg()

WRInaute passionné
Bonjour,

La fonction escapeshellarg() me pose problème.

Si j'affiche le paramètre de ma fonction.

Code:
echo '<p>pdftotext -enc Latin1 ' . escapeshellarg($pFilePath) . ' -</p>';
J'obtiens,

pdftotext -enc Latin1 '/mnt/stockage/client/attachments/files/1.1/Hold-up Planetaire.pdf' -
Si j'execute cette commande sous le Shell unix, elle fonctionne.



Mais si j'execute cette commande sous PHP,

Code:
shell_exec('pdftotext -enc Latin1 ' . escapeshellarg($pFile) . ' -');
Elle ne fonctionne pas.


Voyez-vous une erreur ?
Avez-vous une explication ?


Edit : j'avais oublié de préciser que $pFile passe bien par la fonction escapeshellarg() dans le 2e exemple.
 
WRInaute passionné
c'est que c'est capricieux ces bestioles

dejà j'aurai mis le real path de la commande

ensuite je met toujours la commande separement des args et j'en profite même pour concatener les espaces separements aussi

$cmd = 'path_to_bin'.' '.'-enc Latin1'.' '.escapeshellarg($pFilePath);

rog
 
WRInaute passionné
À noter que cette commande ne fonctionne pas.

Code:
shell_exec('pdftotext -enc Latin1 ' . escapeshellarg($pFile) . ' -');

Alors que sans escapeshellarg ça fonctionne (pour les path sans caractère spéciaux évidement).

Code:
shell_exec('pdftotext -enc Latin1 ' . $pFile . ' -');
 
WRInaute passionné
pas plus etonnant que ça

et le shema de construction que je t'ai donné il buggue aussi ?

rog
 
WRInaute passionné
ça c'est en prod sur un server linux

$command = "i586-mingw32msvc-g++ -mwindows "."$src -o $exe";

$exec = `$command`;

bianire ==> i586-mingw32msvc-g++
1er arg ==> -mwindows
2eme arg ==> $src
3eme arg ==> -o
4eme arg ==> $exe

et c'est vrai que les appels aux commandes externes sont très capricieuses sous apache/php

rog
 
Discussions similaires
Haut