码迷,mamicode.com
首页 > Web开发 > 详细

php 文件上传失败

时间:2016-03-24 13:08:49      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

使用OSX系统,在使用MAMP Pro作为虚拟服务器,并使用PHP作为后端语言进行文件上传,从临时文件夹拷贝文件的方法为

move_uploaded_file

代码如下:

 1 if($_FILES[‘file‘][‘error‘]>0){
 2     echo ‘file error‘;
 3 }else{
 4     echo ‘upload:‘.$_FILES[‘file‘][‘name‘].‘<br>‘;
 5     echo ‘type:‘.$_FILES[‘file‘][‘type‘].‘<br>‘;
 6     echo ‘size:‘.$_FILES[‘file‘][‘size‘].‘<br>‘;
 7     echo ‘stored in:‘.$_FILES[‘file‘][‘tmp_name‘].‘<br>‘;
 8     if (file_exists("upload/" . $_FILES[‘file‘]["name"]))
 9           {
10           echo $_FILES[‘file‘]["name"] . " already exists. ";
11           }
12         else
13           {
14           move_uploaded_file($_FILES[‘file‘]["tmp_name"],
15           "upload/" . $_FILES[‘file‘]["name"]);
16           echo "Stored in: " . "/Applications/MAMP/htdocs/learnPhp/upload/" . $_FILES[‘file‘]["name"];
17           }
18 }

运行报错:

[23-Mar-2016 22:01:39] PHP Warning:  move_uploaded_file(upload/visualize_pnas.py) [<a href=‘function.move-uploaded-file‘>function.move-uploaded-file</a>]: failed to open stream: Permission denied in /Applications/MAMP/htdocs/learnPhp/upload.php on line 18
[23-Mar-2016 22:01:39] PHP Warning:  move_uploaded_file() [<a href=‘function.move-uploaded-file‘>function.move-uploaded-file</a>]: Unable to move ‘/Applications/MAMP/tmp/php/phpBeg1Al‘ to ‘upload/visualize_pnas.py‘ in /Applications/MAMP/htdocs/learnPhp/upload.php on line 18

主要报错为

failed to open stream: Permission denied

意思是,Php没有文件夹写权限,因为只有owner才有写权限。我们需要把这个文件夹的owner改为httpd的owner:

$ ps aux | grep httpd

结果为:

_www            68160   0.0  0.0  2487444    100   ??  S    10:10下午   0:00.00 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            68159   0.0  0.0  2487444    108   ??  S    10:10下午   0:00.01 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            68154   0.0  0.0  2487444    108   ??  S    10:10下午   0:00.03 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            66607   0.0  0.0  2487444    108   ??  S     8:34下午   0:00.09 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            66301   0.0  0.0  2487444    108   ??  S     8:15下午   0:00.06 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            66294   0.0  0.0  2487444    108   ??  S     8:15下午   0:00.04 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            66293   0.0  0.0  2487444    108   ??  S     8:15下午   0:00.06 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            66292   0.0  0.0  2487444    108   ??  S     8:15下午   0:09.47 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            66291   0.0  0.0  2487444    108   ??  S     8:15下午   0:07.27 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            66290   0.0  0.0  2487444    108   ??  S     8:15下午   0:00.08 /Applications/MAMP/Library/bin/httpd -f /Library/Application Support/appsolute/MAMP PRO/conf/httpd.conf -k start
_www            66097   0.0  0.0  2472172     76   ??  S     8:15下午   0:00.00 /Applications/MAMP/Library/bin/

第一列为_www,所以,httpd的owner是_www。

接下来修改文件夹的owner:

$ sudo chown _www /Applications/MAMP/htdocs/learnPhp/upload/ 

这样就可以啦!我们现在验证一下:

看看这个文件夹的owner:

进入文件父目录:

$ cd /Applications/MAMP/htdocs/learnPhp/

查看子目录的owner:

$ ls -l 

结果为:

drwxr-xr-x  3 Yellow  admin  102  3 23 20:27 files
-rw-r--r--  1 Yellow  admin  277  3 23 19:42 index.html
drwxr-xr-x  4 _www    admin  136  3 23 23:07 upload
-rw-r--r--  1 Yellow  admin  792  3 24 10:50 upload.php
-rw-r--r--  1 Yellow  admin  275  3 23 21:10 welcome.php

我们可以看到upload文件夹的owner已经是_www了,不过,之后要是用户常规操作修改文件夹的时候系统就提示需要输入管理员密码了。

php 文件上传失败

标签:

原文地址:http://www.cnblogs.com/nekoooo/p/5314797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!