Search code examples
phpffmpeg

php shell_exec() command pop out error and permission denied ffmpeg


This is the main index.php file where I run my code to generate a video thumbnail with ffmpeg but it has no lucks at all I have been searching online for a lot of solution but nothing comes out i will be very appreciate if you guys can help me out. The shell_exec() keep giving me error

<html>
<head>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><input type="submit" name="submit" value="upload">

</form>

<?php

if(isset($_POST['submit'])){


$ffmpeg = "/Users/mac/Documents/ffmpeg/3.1.4/bin/ffmpeg";
$videoFile = $_FILES["file"]["tmp_name"];
$imageFile = "1.jpg";
$size = "320x240";
$getFromSecond = 5;
$cmd = "$ffmpeg -i $videoFile -an -ss $getFromSecond -s $size $imageFile 2>&1";

    echo shell_exec($cmd);


echo shell_exec('whoami');
if(!shell_exec($cmd)){


    echo "thumbnail created";
}else{
    echo "error creating thumbnail";
}






}

?>

</body>
</html>

Solution

  • The user which is attempting to run this file does not have the correct permissions (usually www-data). To test this theory, try running with sudo:

    shell_exec('sudo -u user -p pass -s $ffmpeg -i $videoFile -an -ss $getFromSecond -s $size $imageFile 2>&1');
    

    You could also configure Apache to run your virtual host as a different user other than www-data or change permissions to the files you would like www-data to access:

    https://unix.stackexchange.com/questions/30879/what-user-should-apache-and-php-be-running-as-what-permissions-should-var-www