我有一个ffmpeg转换器,可以将视频转换为mp4' s。转换后我想删除原始视频以保存文件空间。
我尝试使用unlink($file_path)
,但它说许可被拒绝。
到目前为止,视频转换并生成转化后的缩略图。
$ffmpeg = 'ffmpeg';
$output = dirname(__DIR__).'/uploads/thumbs/'.$_file.'.jpg';
$input = dirname(__DIR__).'/uploads/'.$file;
$mov = new ffmpeg_movie($input);
$d = $mov->getDuration();
$iscopy = $mov->getCopyright();
$h = $mov->getFrameHeight();
$w = $mov->getFrameWidth();
$pos = ceil((int)$d /3);
$size = $w.'x'.$h;
$i = explode('.',$input);
$o = $i[0].'.mp4';
if(ceil($d) < 1200){
if($ext != 'mp4'){
$cmd = "ffmpeg -i $input -vcodec h264 -acodec aac -strict -2 $o";
shell_exec($cmd);
}
$cmd = "ffmpeg -ss $pos -i $o -an -s $size $output";
shell_exec($cmd);
$total_time += $pos;
$succedeed[] = array('name' => $name,'file' => 'thumbs/'.$_file.'.jpg', 'type' => 'mp4');
if(file_exists('../uploads/'.$file)){
unlink('../uploads/'.$file);
}
}else{
$failed[] = array('name' => $name, 'file' => $file, 'error' => 'Video length cannot exceed 20mins.');
}
文件的路径是这样的:
unlink(../uploads/fdbc716e18173d4fe895c6d0b03365df1399237360.avi)
我尝试了this (question),this (question)和很多谷歌搜索,但没有成功:
chdir($FilePath); // Comment this out if you are on the same folder
chown($FileName,465); //Insert an Invalid UserId to set to Nobody Owner; for instance 465
$do = unlink($FileName);
if($do=="1"){
echo "The file was deleted successfully.";
} else { echo "There was an error trying to delete the file."; }
答案 0 :(得分:2)
如果我已正确阅读您的问题,以下内容应该有效:
<?php
$FileName = "uploaded_file"
if (unlink($FileName))
{
echo ("$FileName has been deleted successfully. ");
}
else
{
echo ("The uploaded file has NOT been deleted.");
}
?>
如果没有。您必须在上传期间更改文件的所有权。
chmod($FileName, 0755);
答案 1 :(得分:0)
您需要在unlink函数中围绕路径抛出引号。
$do = unlink('../uploads/fdbc716e18173d4fe895c6d0b03365df1399237360.avi');
我也建议你这样做:
if($do) {
// true
} else {
// false
}
$ unlink只返回true或false,因此您可以直接在if语句中使用。
如果您可以ssh进入服务器,请在您的目录中执行“ls -la”上传,并查看所有者和权限是什么。如果它们是通过php上传的,那么它们应该由可以删除它们的同一用户拥有。
答案 2 :(得分:0)
file_exists函数不采用相对路径,而是使用绝对路径:
$doc_root = $_SERVER['DOCUMENT_ROOT'];
if(file_exists($doc_root . '/uploads/' . $file)){
unlink($doc_root . '/uploads/' . $file);
}
答案 3 :(得分:0)
documentReady
只需修改此代码即可使用