exec函数在PHP中不起作用
在php中,exec函数无法运行shell命令 如果我在终点站跑步exec函数在PHP中不起作用,php,linux,ubuntu,lamp,Php,Linux,Ubuntu,Lamp,在php中,exec函数无法运行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”);正在为我提供正确的输出。很可能需要为命令提供文件的完整路径,因为PH
$ 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”);正在为我提供正确的输出。很可能需要为命令提供文件的完整路径,因为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
检查aconv
的正确路径
要检查是否有任何错误,请在exec
命令中添加第二个参数并打印它:
exec('...', $result);
var_dump($result);
好吧,这是一个文件权限问题。www data没有写入文件的权限,在更改权限后,它现在正在工作。您需要按照以下步骤操作
- 首先检查exec()函数是否存在
if(function_exists('exec')){ echo 'Function exists'; }else{ echo 'Function does not exists'; }
- 如果存在,则exec代码中可能存在语法错误。如果它不存在,请使用下面给出的函数在php.ini下禁用它
function disabled_functions(){ $disabled = explode(',', ini_get('disable_functions')); return $disabled; } echo "<pre>"; print_r(disabled_functions());
上面的函数将列出php.ini中的所有禁用函数功能禁用\u功能(){ $disabled=explode(',',ini_get('disable_functions'); 返回$disabled; } 回声“; 打印(禁用的函数());
- 如果上述禁用的函数()的输出中存在exec。然后转到/etc/php.ini并从禁用函数中删除exec
- 保存php.ini文件后,重新启动php fpm。如果是Redhat/CentOS 7和Fedora。
sudo systemctl重新启动php fpm
- exec可能不会列在php.ini文件的禁用函数中
- 从WHM面板登录,转到MultiHP Manager,单击系统PHP-FPM配置选项卡,然后转到禁用的功能。现在从这里移除exec
- 删除后,保存并重新启动PHP-FPM
- 如果您没有WHM面板访问权限,您可能无法使用此功能。因此,请向您的主机提供商请求shell访问权限,并仅为您的帐户请求exec