Я пытаюсь запустить сервер на ArchLinux, у меня Apache и PHP работают нормально, но я не могу загрузить файл с PHP. Я видел много подобных вопросов на Stackoverflow и, похоже, использовал все найденные мной предложения, но я все еще получаю
failed to open stream: Permission denied in /srv/http/upload.php
ошибка.
Точнее
Warning: move_uploaded_file(): Unable to move '/tmp/phpZvJK1l' to '/home/administrator/SCRIPTS/tr/solution.cpp' in /srv/http/upload.php on line 20
Я установил разрешения для / tmp /, / home / administrator / SCRIPTS / tr и / srv / http на 777 (я знаю, что это не правильно, но я сейчас работаю локально и хочу, чтобы это как-то работало).
Также я установил для всех владельцев этих каталогов значение http (то есть пользователя, работающего с PHP), но это все равно не работает.
Некоторые конфигурации PHP не разрешают доступ к файлам вне каталога docroot пользователя, поэтому у вас может не быть доступа к / tmp изнутри PHP. Попробуйте загрузить ваши файлы во временный каталог в вашем каталоге / home / administrator — предпочтительно в каталог, который не доступен для веб-браузеров (одноуровневый каталог вашего docroot).
дать разрешение директории / tmp:
sudo chmod 777 / tmp
Как пользователь Arch у меня та же проблема, когда я работаю над веб-проектами.
Я рекомендую вам посмотреть этот часть Arch Wiki
Пользовательские каталоги доступны по умолчанию через HTTP: // локальный / ~ имя_пользователя / и показать содержимое ~ / public_html (это можно изменить в /etc/httpd/conf/extra/httpd-userdir.conf).
Так что сделайте так, чтобы вам пришлось создать каталог ~ / public_html тогда
Вы должны убедиться, что разрешения вашего домашнего каталога установлены правильно, чтобы Apache мог туда добраться. Ваш домашний каталог и ~ / public_html должны быть исполняемыми для других («остальной мир»):
$ chmod o+x ~
$ chmod o+x ~/public_html
$ chmod -R o+r ~/public_html
После этого вам не нужно помещать файл под /srv/http/
теперь вы можете использовать ~/public_html
в качестве каталога разработки.