我正在使用Ubuntu 12.04,apache2 + nginx(ISPManager)
我的服务器与Wowza Media Server配合使用,该服务器将录制的.flv
视频放入{root-of-the-server}/movies
我收到了$_GET['rfile']
行动的$this->request->get('rfile')
视频名称。
文件在文件夹中成功创建,我以两种方式找到它:
file_get_contents('http://<ip, which sends to {root-of-the-server}>/movies/'.$this->request->get('rfile'));
或
`find /movies/ -name $rfile`;
要将我的录制视频从Wowza文件夹上传到网站,我正在尝试在录制停止后重命名该文件:
从
'{root-of-the-server}/movies/$this->request->get('rfile').flv'
为了
'.$_SERVER['DOCUMENT_ROOT'].'/upload/resume/resume'.$item['id'].'.flv'
我使用$_SERVER['DOCUMENT_ROOT']
,因为我需要自动移动录制的视频,并在几个网站上移动。
注意:我没有将{root-of-the-server}
放在我的实际脚本中,这只是一个在此发布的占位符。
我正在尝试用PHP重命名这个
首先尝试:
shell_exec('mv /movies/'.$this->request->get('rfile').''.$_SERVER['DOCUMENT_ROOT'].'/upload/resume/resume'.$item['id'].'.flv');
第二次尝试:
mv /movies/$rfile /movies/ok-just-rename-it-plz.flv
第三次尝试:
rename('http://95.183.8.96:81/'.$this->request->get('rfile'), 'http://95.183.8.96:81/'.$item['id'].'.flv');
第四次尝试:
rename('/movies/'.$this->request->get('rfile'), '/upload/resume/resume'.$item['id'].'.flv');
然而,这些尝试都没有奏效。如何使用http包装器重命名这两个文件?或者我如何以其他方式重命名它们?
答案 0 :(得分:1)
rename
就是您所需要的。如果它可以通过HTTP,你就会有一个主要的安全漏洞,所以坚持绝对路径。确保您的目标目录可以使用PHP写入:
echo is_writable($_SERVER['DOCUMENT_ROOT'] . '/upload/resume/resume') ? 'yup' : 'nope';
同时检查以确保源文件确实存在:
echo file_exists('/movies/' . $this->request->get('rfile')) ? 'yup' : 'nope';
并且您有权阅读它:
echo is_readable('/movies/' . $this->request->get('rfile')) ? 'yup' : 'nope';
如果其中任何一项失败,您就会遇到权限问题,需要使用chmod
或chown
进行纠正。
答案 1 :(得分:0)
我现在的问题出现在ISPmanager的open_basedir
中(默认情况下open_basedir
已启用)。
我去/etc/apache2/apache2.conf
进行了这些修改:
<Directory /var/www/USER/data/www/WEBSITE>
php_admin_value open_basedir "/movies:/var/www/USER/data:."
</Directory>
而不是
<Directory /var/www/USER/data/www/WEBSITE>
php_admin_value open_basedir "/var/www/USER/data:."
</Directory>
无论如何,感谢Kevin Nagurski的回答:33