访问被拒绝 - PHP move_uploaded_file - Ubuntu LAMP/var/www

use*_*ser 4 php linux permissions ubuntu

我意识到我的tmp文件夹或我在/ var/www文件夹中创建的images文件夹的权限存在某种问题.我知道/ var/www最初具有root访问权限.我一直在关注一些在线教程,试图解决这个问题并将我的权限更改为谁知道过去一小时左右的内容.

尝试使用PHP/MySQL从HTML表单上传文件时收到此错误:

Warning: move_uploaded_file(images/verified-gw.gif): failed to open stream: Permission  
denied in /var/www/addscore.php on line 40 Warning: move_uploaded_file(): Unable to move 
'/tmp/phpla4QCP' to 'images/verified-gw.gif' in /var/www/addscore.php on line 40 cannot 
move uploaded file or something beavis
Run Code Online (Sandbox Code Playgroud)

所以我认为/ var/www/images文件夹上的权限不正确,或者tmp文件夹的权限是root,ubuntu的内核不允许php脚本从这个root拥有的文件移动到具有权限的images文件夹根据我的知识,我的用户帐户是在没有人的组.

我很迷茫,任何帮助都绝对值得赞赏.

Ubuntu Linux gnome文件夹权限的截图

上面你可以看到我试图将文件从tmp目录移动到的images文件夹的权限图片.

哦,这是失败的PHP脚本:

if (!empty($screenshot)) { 
move_uploaded_file($_FILES['screenshot']['tmp_name'], $target) 
or die (' cannot move uploaded file or something beavis'); 
Run Code Online (Sandbox Code Playgroud)

尊敬,

用户

Web*_*bHQ 12

使用USER DIR mod

如果这是开发者机器,我认为它是,不要尝试使用/ var/www(将始终存在权限问题)尝试使用用户目录

您将把所有文件和项目保存在家中,不存在任何权限问题.

使用Apache root dir

好的,所以如果你不能使用用户目录,你必须像这样设置文件系统:

1.找出apache所有者用户名.如果您使用Ubuntu,它应该是www-data.转到终端并键入:

$ ps aux | grep apache

你应该在下面得到这样的东西.第一列是用户名.

www-data 2070 0.0 0.0 463244 7788 ? S sty25 0:00 /usr/sbin/apache2 -k start

2.找出apache用户组.再次终端,输入:

$ sudo groups www-data

你应该在下面得到这样的东西.第二列是组名.

www-data : www-data

3.为apache root dir设置RIGHT所有者用户和所有者组:

$ sudo chown -R www-data:www-data /var/www/

4.为apache root dir设置RIGHT权限:

$ sudo chmod -R 775 /var/www/

现在您已清理系统,我们尝试修复您的用户以访问/ var/www目录.

5.将apache组添加到您的用户:

$ sudo usermod -a -G www-data {YOUR_USER_NAME}

警告!别忘了 - 换!这样,您可以将新组附加到现有列表,而不是用新组替换旧组列表.

现在您具有对位于apache根目录中的文件的读/写访问权限.我们需要告诉apache新文件对组成员应该是可读/可写的

6.将umask命令添加到apache环境配置:

$ sudo echo umask 002 >> /etc/apache2/envvars

或者使用图形编辑器:

$ gksudo gedit /etc/apache2/envvars

并放在umask 002此文件的最后一行

7.

$ sudo apache2ctl restart

祝好运!


use*_*ser 6

这解决了我的问题:http : //ubuntuforums.org/showthread.php?t=1842090&s=8b97ec72fe7cd753910f488329a90f0f&p=11239688#post11239688

tl:dr-我输入了: sudo chown -R www-data:www-data /var/www

我不认为这是尝试对tmp目录和此chmod chmod的组合。我认为这只是在更改/ var / www文件夹中保留所有LAMP文件的权限。

现在,PHP脚本可以工作,并将图像文件丢到我创建的目录中。如果Ubuntu在用户目录中安装了像这样的LAMP堆栈之类的测试服务器,而不必学习文件权限(例如我保护我的文件不受纳粹潜艇的攻击),则会更加容易。