无法运行shell命令。
如果我在终端
中运行 $ avconv -i in.mp4 -f mp3 -ab 192000 -vn rip.mp3
该命令工作正常,该命令用于将视频转换为mp3。 但是,当我尝试通过PHP执行时,它就无法正常工作。
exec("avconv -i in.mp4 -f mp3 -ab 192000 -vn rip.mp3");
或者如果我尝试exec(“whoami”);正在给我正确的输出。
答案 0 :(得分:2)
您很可能需要为命令提供文件的完整路径,因为PHP中的当前目录与shell中的目录不同。
exec("avconv -i /path/to/in.mp4 -f mp3 -ab 192000 -vn /path/to/rip.mp3");
甚至可能是aconv
安全的完整路径:
exec("/bin/avconv -i /path/to/in.mp4 -f mp3 -ab 192000 -vn /path/to/rip.mp3");
使用aconv
检查which aconv
的正确路径。
要检查是否有任何错误,请在exec
命令中添加第二个参数并打印它:
exec('...', $result);
var_dump($result);
答案 1 :(得分:0)
答案 2 :(得分:0)
您需要执行以下步骤。
首先检查exec()函数是否存在。
if(function_exists('exec')){
echo 'Function exists';
}else{
echo 'Function does not exists';
}
如果存在,则您的执行代码中可能存在语法错误。如果不存在,请使用下面提供的功能检查它是否在php.ini下禁用。
function disabled_functions(){
$disabled = explode(',', ini_get('disable_functions'));
return $disabled;
}
echo "<pre>";
print_r(disabled_functions());
以上功能将列出php.ini中的所有禁用功能。
如果exec在上述disable_functions()的输出中存在。然后转到/etc/php.ini并从 disable_functions
保存php.ini文件后,重新启动php-fpm。如果是Redhat / CentOS 7和Fedora。
sudo systemctl restart php-fpm
如果您使用的是Cpanel和WHM面板
该exec可能未在php.ini文件的 disable_functions 中列出。
从WHM面板登录,转到MultiPHP Manager,单击“系统PHP-FPM配置”选项卡,然后转到“禁用的功能”。现在从这里删除执行程序。
删除后保存并重新启动PHP-FPM。
如果您没有WHM面板访问权限,则可能无法使用此功能。因此,请要求您的托管服务提供商提供外壳程序访问权限,并仅对您的帐户执行。