2010-05-17 11 views
2

J'essaie de courir boiteux d'un script php.Courir lame de php

J'ai essayé ceux-ci, mais pas de chance, je ne reçois rien retourné! Des idées?

system('lame', $returnarr); 
system('lame --help', $returnarr); 
exec('lame', $returnarr); 
passthru('lame', $returnarr); 

même celui-ci ne retourne rien:

exec('which lame', $returnarr); 

Je suis sur le déploiement et OSX dernière sera sur Linux. Avez-vous de meilleures suggestions pour une conversion automatique wav-> mp3? De php, devrais-je exécuter un script bash qui exécute Lame?

+0

qu'avez-vous fait pour déboguer jusqu'à présent? Y a-t-il des messages de sortie ou d'erreur de l'un de ces appels? Difficile de dire quoi faire si nous ne savons pas ce que vous avez fait et quels sont les résultats. – Zak

+0

Je ne reçois rien retourné: print_r ($ returnarr); résultat: Array() – gok

Répondre

4

Essayez quelque chose comme ceci:

$output = array(); 
$result = -1; 
exec('`/usr/bin/which lame` --help 2>&1', $output, $result); 
var_dump($output, $result); 

sortie $ doit être un tableau de lignes contenues dans la sortie

$ result devrait être un code de résultat entier. 0 est généralement un succès,> = 1 est une erreur (les codes spécifiques dépendent de l'application).

La partie 2> & redirigera STDERR vers STDOUT ($ output) qui serait normalement supprimée. Donc, si c'est une erreur, vous devriez être capable de voir l'erreur (j'espère). Si vous obtenez -1 pour le vidage de $ result, il y a un problème de fond, car ce n'est pas un code de résultat valide (cela signifie probablement que exec est désactivé, ou le processus que vous essayez d'exécuter est limité à cause de autorisations d'erreurs ou le tel) ...

+0

merci beaucoup! c'est étrange que je ne puisse pas obtenir "qui" fonctionne mais boiteux fonctionne avec le chemin complet. – gok

+0

Peut-être que "> = 1 est une erreur"? –

+0

Correction du problème> = 1. Merci de souligner que Dennis ... – ircmaxell

0

Définir les rapports d'erreur sur et vérifier si vous pouvez faire exec. Par défaut, la plupart des systèmes ne le permettent pas, c'est un sérieux problème de sécurité. Vous devez autoriser explicitement les execs dans php.ini.

+0

Le rapport d'erreur est défini sur: E_ALL & ~ E_STRICT, le mode sans échec est désactivé, la variable disable_functions est vide, je ne comprends pas pourquoi il n'y a pas d'erreur et rien n'est renvoyé. – gok

0

Peut-être un problème $PATH. Essayez de spécifier le chemin complet vers lame, c'est à dire. /usr/local/bin/lame.

+0

non, essayé déjà – gok

3

Si vous ressentez le besoin d'un moyen plus pratique de travailler avec lame, je recommande d'utiliser phplame wrapper. Installez le wrapper PHP LAME à l'aide de Composer:

{ 
    "require": { 
     "b-b3rn4rd/phplame": "dev-master" 
    } 
} 
+0

impressionnant wrapper –

+0

@ Ludo-Offtherecord, merci compagnon –