Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ffmpeg命令通过命令行执行,但不通过PHP脚本执行_Php_Video_Ffmpeg_Windows 10_Ubuntu 18.04 - Fatal编程技术网

ffmpeg命令通过命令行执行,但不通过PHP脚本执行

ffmpeg命令通过命令行执行,但不通过PHP脚本执行,php,video,ffmpeg,windows-10,ubuntu-18.04,Php,Video,Ffmpeg,Windows 10,Ubuntu 18.04,我正在开发一个简单的视频上传和压缩系统,目前我正在使用以下过程 第一步 我使用multipart/form data上传原始视频文件,并将其存储在/var/www/site/videos\u pre/video.mp4中。我的公用文件夹是var/www/site/public\u html/。我在数据库中存储了一个包含视频信息的条目 第二步 我有一个非常基本的转换器进程,但它完成了这项工作(至少在CLI中) 其代码如下: 公共函数转换器($content\u id) { $content=$th

我正在开发一个简单的视频上传和压缩系统,目前我正在使用以下过程

第一步

我使用
multipart/form data
上传原始视频文件,并将其存储在
/var/www/site/videos\u pre/video.mp4
中。我的公用文件夹是
var/www/site/public\u html/
。我在数据库中存储了一个包含视频信息的条目

第二步

我有一个非常基本的转换器进程,但它完成了这项工作(至少在CLI中)

其代码如下:

公共函数转换器($content\u id)
{
$content=$this->videos\u m->get($content\u id);
$id=uniqid();
$name\u mp4=$content->name\u slug.“'.$id..mp4”;
$name_webm=$content->name_slug.“'.$id..webm”;
$command_mp4='ffmpeg-i../videos_pre/'.$content->original_file.-b:v 1500k-bufsize 1500k./videos/'.$name_mp4;
系统($command_mp4);
$command_webm='ffmpeg-i./videos/'.$name_mp4.-c:v vp9-c:a libvorbis./videos/'.$name_webm;
系统($command_webm);
$update_video=new stdClass();
$update\u video->archivo\u mp4=$name\u mp4;
$update\u video->archivo\u webm=$name\u webm;
$this->db->where('content\u id',$content\u id);
$this->db->update('Videos',$update\u video);
}
第三步-出现问题的地方

我已经在Windows10和Ubuntu18.04上测试过了。该代码在php和cli中都可以在Windows 10上运行。Ubuntu上的代码仅适用于cli

生成的命令如下所示:

//降低mp4比特率的第一个命令
ffmpeg-i/var/www/site/videos_pre/video.mp4-b:v 1500k-bufsize 1500k/var/www/site/public_html/videos/video_5e757d3e0d762.mp4
//第二个命令,用于将mp4转换为webm以获取这两种类型
ffmpeg-i/var/www/site/public_html/videos/video_5e757d3e0d762.mp4-c:v vp9-c:a libvorbis/var/www/site/public_html/videos/videos_5e757d3e0d762.webm
如果我执行这些命令,它们就会完美地工作。如果我运行php脚本,无论是在浏览器中还是通过CLI,实际上什么都不会发生。没有错误消息,什么都没有

我不确定这是否是一个权限问题,是否有一些特定的php来运行这个,或者一些我没有激活的模块。我有足够的执行时间,我有600秒的时间,但正如我所说的,它甚至不需要时间,只是什么都不做

我甚至可以回应命令,它们就会出现。所以,基本上问题是我需要能够从PHP运行这些命令。我是在Windows上做的,但Ubuntu 18.04不让我这么做。这两个操作系统最近都安装了ffmpeg,我可以在这两个操作系统上进行转换


我尝试将路径从绝对更改为相对,完全没有区别。

因此,我设法解决了它,结果发现这是一个权限问题

我有我的
/var/www/site
文件夹,权限如下:
myuser:www-data
。在检查了一个类似的问题后,我将文件夹权限更改为
www-data:root
,它立即生效


我希望权限更改不会影响其他事情,但目前一切正常。

而且Web服务器错误日志中没有输出?没有。好像什么都没发生@邪恶的臭鼬在这种情况下,分配根权限会有安全风险吗?