system php возвращает NULL

Рейтинг: 0Ответов: 1Опубликовано: 03.04.2015

Добрый день! Есть необходимость поменять битрейт песни прямо на сервере(centos, php, mysql, apache). Для этого использую lame

На локальном сервере все работает отлично, а вот на глобальном ничего не происходит. Вот такую команду я использую

exec("lame -b 128 ".$_SERVER['DOCUMENT_ROOT'].$mp3_name." ".$_SERVER['DOCUMENT_ROOT'].'/music/'.$dataf['last_id_file'].".mp3");

Ответы

▲ 2Принят

Проверьте не включен ли safe_mode для php. Так же может быть включено ограничение использования функций php - disable_functions.

Ещё может быть, что у пользователя, от которого запускается веб-сервер, отсутствует оболочка. Попробуйте выполнить:echo exec("whoami"); После получения ответа, проверьте есть ли валидная оболочка в файле /etc/passwd: echo exec("cat /etc/passwd");.

Как вариант можно ещё выводить результат выполнения команды в файл: exec("/usr/bin/some_command > /full/path/to/root/dir/log.txt");

Но скорее всего команда lame отсутствует в директориях поиска бинарников для пользователя, от которого происходит запуск. С консоли на сервере сделайте which lame, после чего исправьте Вашу команду, указав полный путь до бинарника, например exec("/usr/local/bin/lame [options] [filename]");