gpt4 book ai didi

php - 无法使用 shell 命令在 php 中转换音频文件格式

转载 作者:行者123 更新时间:2023-12-02 23:08:43 25 4
gpt4 key购买 nike

我正在尝试使用 PHP 将上传的音频文件转换为 .mp3 格式。
我的服务器中启用了 ffmpeg。

我尝试执行 shell 命令,但它没有转换音频文件的文件格式。 exec()shell_exec()都启用。

<?php 
$uploadpath = realpath('./') . '/musicfolder/';

$filedata = $_FILES['filedata']['tmp_name'];
$filename = $_POST['filename'];
if ($filedata != '' && $filename != ''){


list($name,$ext) = explode('.',$filename);
$file_mp3=$name.".mp3";
$file_wav=$name.".wav";
shell_exec(' ffmpeg -i '.$filename.' -ac 1 -ab 16000 -ar 8000 '.$file_mp3.'');



if($can_create){
copy($filedata,$uploadpath.$filename);
echo "-file_update_successful-";
}

}


?>

我不明白我在哪里犯错了。我可以使用 system() 来实现吗? ?

最佳答案

您应该通过 escapeshellcmd 转义文件名喜欢:

$file_mp3 = escapeshellcmd($name . ".mp3");
$file_wav = escapeshellcmd($name . ".wav");

你在这里搞砸了很多。
出于安全原因,您应该首先检查文件是否使用 is_uploaded_file 上传。 .

然后你应该尝试转换 $filedata 而不是 $filename

我不确定您要构建什么,但验证用户输入始终是一种好习惯。

使用您的脚本,可以将文件上传到与您预期不同的位置。

例如,可以发布一个二进制文件并发布一个像“../../bin/admintool.exe”这样的文件名
这最终会像:
copy($filedata, '/musicfolder/../../bin/admintool.exe');
echo "-file_update_successful-";

关于php - 无法使用 shell 命令在 php 中转换音频文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36403355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com