Попытка переименовать два файла в переполнении стека

Я использую 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

Решение

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

Другие решения

Моя проблема этих дней была в 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

0

По вопросам рекламы [email protected]