Я использую 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? Или как я могу переименовать их по-другому?
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
,
Моя проблема этих дней была в open_basedir
ISPmanager (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>
В любом случае, спасибо Кевину Нагурски за ответ: 33