2010-05-17 3 views
2

Я пытаюсь запустить lame из php-скрипта.Запуск lame из php

Я пробовал это, но не повезло, я ничего не получил! Есть идеи?

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

даже это один ничего не возвращает:

exec('which lame', $returnarr); 

Я нахожусь на OSX и окончательное развертывание будет на Linux. У вас есть лучшие предложения для автоматического преобразования wav-> mp3? От php, должен ли я выполнить скрипт bash, который выполняет Lame?

+0

Что вы сделали для отладки до сих пор? Есть ли сообщения о выходе или сообщения об ошибках из любого из этих вызовов? Трудно сказать, что делать, если мы не знаем, что вы сделали и какие результаты были/были. – Zak

+0

Я ничего не получаю: print_r ($ returnarr); result: Array() – gok

ответ

4

попробовать что-то вроде этого:

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

$ выход должен быть массивом строк, содержащихся в выходном

$ результат должен быть целым код результата. 0 обычно является успешным,> = 1 является ошибкой (конкретные коды зависят от приложения).

2> & 1 часть перенаправляет STDERR на STDOUT ($ output), который обычно отбрасывается. Поэтому, если это ошибка, вы должны уметь видеть ошибку (надеюсь).

Если вы получаете -1 для дампа результата $, возникает фундаментальная проблема, потому что это неверный код результата (вероятно, это означает, что exec отключен или процесс, который вы пытаетесь запустить, ограничен из-за ошибки разрешений или такие) ...

+0

спасибо большое! странно, что я не могу получить «что» работает, но хромой работает с полным путем. – gok

+0

Возможно, «> = 1 является ошибкой»? –

+0

Исправлена ​​проблема с = = 1. Спасибо, что указали, что Деннис ... – ircmaxell

0

установить сообщение об ошибке и проверить, можете ли вы выполнить exec. По умолчанию большинство систем не позволяют этого, это серьезная ответственность за безопасность. Вы должны явно разрешить execs в php.ini.

+0

Сообщение об ошибке настроено на: E_ALL & ~ E_STRICT, безопасный режим выключен, переменная disable_functions пуста, я не понимаю, почему ошибок нет и ничего не возвращается. – gok

0

Может быть $PATH проблема. Попробуйте указать полный путь к хромому, т.е. /usr/local/bin/lame.

+0

nope, попробовал уже – gok

3

Если вы чувствуете потребность в более удобном способе работы с lame, я бы рекомендовал использовать обертку phplame. Установите упаковку PHP LAME с помощью Composer:

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

ужасная обертка –

+0

@ Ludo-Offtherecord, спасибо mate –

Смежные вопросы