Я продолжаю получать эту ошибку при попытке настроить каталог загрузки с Apache 2.2 и PHP 5.3 на CentOS.
В php.ini:
upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/ 
В httpd.conf:
 Directory /var/www/html/mysite/tmp_file_upload/> Options -Indexes AllowOverride None Order allow,deny Allow from all </Directory> <Directory /var/www/html/mysite/images/> Options -Indexes </Directory> 
Разрешения каталога CentOS:
 drwxrwxr-x 2 root root 4096 Nov 11 10:01 images drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload 
Независимо от того, что я делаю, я все время получаю эту ошибку от PHP, когда я загружаю файл:
Предупреждение: move_uploaded_file (images / robot.jpg): не удалось открыть поток: разрешение отклонено в /var/www/html/mysite/process.php в строке 78
Предупреждение: move_uploaded_file (): невозможно переместить '/ tmp / phpsKD2Qm' в 'images / robot.jpg' в /var/www/html/mysite/process.php в строке 78
Как вы можете видеть, он никогда не принимал конфигурацию из файла php.ini относительно файла загрузки.
Что я здесь делаю неправильно?
  Это связано с тем, что images и tmp_file_upload доступны только для пользователей root .  Для загрузки на работу нам необходимо сделать владельца этих папок таким же, как владелец процесса httpd, или сделать их доступными для всего мира (плохая практика). 
$ps aux | grep httpd  $ps aux | grep httpd .  Первый столбец будет владельцем, как правило, nobody будет   Измените владельца images и tmp_file_upload чтобы стать nobody или nobody либо владельцем, которого вы нашли на шаге 1. 
 $sudo chown nobody /var/www/html/mysite/images/ $sudo chown nobody /var/www/html/mysite/tmp_file_upload/ 
  images tmp_file_upload и tmp_file_upload теперь будут доступны для записи владельцем, если это необходимо [По-видимому, у вас уже есть это место].  Упоминается в @Dmitry Teplyakov ответ. 
 $ sudo chmod -R 0755 /var/www/html/mysite/images/ $ sudo chmod -R 0755 /var/www/html/mysite/tmp_file_upload/ 
  Для получения дополнительной информации о том, почему это происходит, проверьте руководство http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir , обратите внимание, что он также говорит об директиве open_basedir . 
Вы также можете запустить этот скрипт, чтобы узнать владельца процесса Apache:
 <?php echo exec('whoami'); ?> 
А затем измените владельца целевого каталога на то, что у вас есть. Используйте команду:
 chown user destination_dir 
Затем используйте команду
 chmod 755 destination_dir 
для изменения разрешения каталога назначения.
Изменить разрешения для этой папки
 # chmod -R 0755 /var/www/html/mysite/images/ 
  Я столкнулся с этой проблемой, даже после того, как уже успешно работал композитор.  Я обновил композитор, а при запуске composer install или composer install php composer.phar install я получил: 
… не удалось открыть поток: Permission denied …
После многих исследований выясняется, что предыдущие ответы относительно изменения разрешений для папки работали. Сейчас они немного разные.
  В моей установке, в OS X, файл кеша находится в /Users/[USER]/.composer/cache , и у меня возникли проблемы, потому что кэш-файл принадлежал root.  Меняя репликацию прав собственности на «.composer», мой пользователь решил проблему. 
Это то, что я сделал:
 sudo chown -R [USER] cache 
Потом я снова запустил композитор и вуаля!
Попробуй это:
открыть / etc / apache2 / envvars
 sudo gedit /etc/apache2/envvars 
  замените www-data своим your_username 
 "export APACHE_RUN_USER=www-data" 
заменить
 export APACHE_RUN_USER='your_username' 
Если у вас Mac OS X, перейдите в корень файла или папку вашего веб-сайта.
Затем щелкните правой кнопкой мыши по нему, идите, чтобы получить информацию, идите в самую нижнюю часть (« Совместное использование и разрешения» ), откройте это, измените все только на чтение, чтобы читать и писать. Обязательно закройте замок, перейдите к значку настройки и выберите « Применить» к закрытым элементам …
Это сработало для меня.
 sudo adduser <username> www-data sudo chown -R www-data:www-data /var/www sudo chmod -R g+rwX /var/www 
Затем выйдите из системы или перезагрузитесь.
  Если SELinux жалуется, попробуйте следующее 
 sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www(/.*)?' sudo restorecon -Rv '/var/www(/.*)?' 
Эта проблема возникает, когда пользователь apache (www-data) не имеет права на запись в папку. Чтобы решить эту проблему, вам нужно поместить пользователя в группу www-data.
Я только что сделал это:
  Выполните этот php-код <?php echo exec('whoami'); ?>  <?php echo exec('whoami'); ?> чтобы открыть пользователя, используемого apache.  После этого выполните команды в терминале: 
 user@machine:/# cd /var/www/html user@machine:/var/www/html# ls -l 
Он вернется примерно так:
 total of files drwxr-xr-x 7 user group size date folder 
Я сохранил пользователя, но изменил группу на www-data
 chown -R user:www-data yourprojectfoldername chmod 775 yourprojectfoldername 
Я хотел добавить это к предыдущим предложениям. Если вы используете версию Linux с включенным SELinux, вы также должны выполнить ее в оболочке:
 chcon -R --type httpd_sys_rw_content_t /path/to/your/directory 
Наряду с предоставлением разрешения пользователя веб-сервера либо через группу, либо с изменением владельца каталога.
Попробуй это
 find /var/www/html/mysite/images/ -type f -print0 | xargs -0 chmod -v 664 
Просто измените разрешение tmp_file_upload на 755. Ниже приведена команда chmod -R 755 tmp_file_upload
Решение так просто. Только щелкните правой кнопкой мыши папку IMAGE (место назначения), перейдите к свойствам, щелкните вкладку разрешения и измените доступ других к созданию и удалению файлов .