Изменить разрешение папки на 777 с помощью PHP временно

У меня есть папка Video на моем сервере с разрешением 755. Проблема в том, что когда кто-то собирается загрузить видеофайл, его нельзя загрузить в эту папку из-за ошибки разрешения.

Если я изменю разрешение на 777, то видео можно будет загрузить. Но я не хочу разрешать папке разрешение 777 по соображениям безопасности.

Есть ли способ в PHP временно изменить разрешение на 777 при загрузке видео?


person Sumit Bijvani    schedule 05.03.2013    source источник
comment
Пожалуйста, посмотрите stackoverflow.com /вопросы/2958602/   -  person Wasim    schedule 05.03.2013


Ответы (4)


PHP предоставляет функцию chmod() для выполнения задачи.

Пытается изменить режим указанного файла на указанный в режиме.

Вы можете поместить его в оператор if, и если он вернет false, вы можете пропустить часть загрузки файла.


Использование будет таким

if( chmod($path, 0777) ) {
    // more code
    chmod($path, 0755);
}
else
    echo "Couldn't do it.";

Как описано в руководстве по функциям chmod, $mode должно быть в восьмеричном формате - с ведущий ноль, т.е. chmod($path, 0777)

person hjpotter92    schedule 05.03.2013
comment
Разве это условие if уже не изменит разрешения на 0777? - person AAGD; 05.11.2015
comment
@AAGD Да. Но возник вопрос: Есть ли способ в PHP временно изменить разрешение на 777 при загрузке видео? - person hjpotter92; 05.11.2015
comment
Чтобы проверить права доступа к файлу, используйте: if (substr(sprintf('%o', fileperms($path)), -4) == '0777') { chmod($path, 0755); } - person Amr; 17.06.2021

Есть способ (PHP предоставляет функцию chmod), но поскольку PHP не является владельцем папки, вы не сможете изменить разрешение. И я думаю, что вы решаете не ту проблему. Добавьте веб-сервер и PHP в одну группу и присвойте папке 775.

person Maxim Krizhanovsky    schedule 05.03.2013
comment
потому что PHP явно не в группе владельца папки :) - person Maxim Krizhanovsky; 05.03.2013
comment
@MaximKrizhanovsky пользователь PHP? Можете ли вы уточнить больше, пожалуйста. - person Elber CM; 13.10.2016
comment
@ElberCM PHP можно запускать несколькими способами, в том числе как часть процесса веб-сервера или как программу CGI. Чаще всего PHP находится под тем же пользователем, что и веб-сервер. Однако в этом нет необходимости. Ознакомьтесь с этим ответом на stackoverflow - person Maxim Krizhanovsky; 13.10.2016

Вы можете использовать функцию chmod().

Для получения дополнительной информации попробуйте здесь

person Edwin Alex    schedule 05.03.2013

Вы должны инициализировать конфигурацию для загрузки, например:

$config['remove_spaces'] = FALSE;
$config['upload_path'] = $path;
$this->upload->initialize($config);
$this->load->library('upload', $config);   
person Viswanath Vichu R    schedule 06.12.2013
comment
это связано с codeigniter, а не с тем, над чем он работает. - person Exploit; 26.06.2015