繁体   English   中英

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

[英]access denied - PHP move_uploaded_file - Ubuntu LAMP /var/www

我意识到我的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

所以我认为/ 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'); 

尊敬,

用户

使用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

祝好运!

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

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

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

现在PHP脚本工作并将图像文件扔到我制作的目录中。 如果Ubuntu在用户目录中安装了像这个LAMP堆栈这样的测试服务器而不必学习文件权限,就像我保护我的文件免受纳粹潜艇的攻击,那会更容易。

试试这个: sudo chown -R 777 /var/www/images

你需要给文件一个公共权限777或755所以文件可以上传到指定的目录,它只有一个权限

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM