2013-03-15 83 views
1

我试图上传并保存图像文件。这在过去运行良好,但现在正在返回一个错误。由于文件权限而无法保存文件

警告:move_uploaded_file(//家用/ bitnami/htdocs中/ lookgram /照片/ 1/22.jpeg):未能打开流:权限在的/ opt/bitnami否认/ Apache2的/ htdocs中/ lookgram /建上线/classes/Photo.php

警告:move_uploaded_file()以:无法 '/ TMP/phpAyWyw4' 移动到“//家/ bitnami/htdocs中/ lookgram /照片/22分之1 .jpeg'在/opt/bitnami/apache2/htdocs/lookgram/build/classes/Photo.php on line

这看起来像一个文件PERMSSION错误,所以这里是该文件夹的权限:

drwxrwxr-x 6 bitnami bitnami 4096 Mar 15 01:02 photos

任何想法?

+1

当你正在寻找一个权利价值时,你有'drwxrwxr-x'。所以对于你(bitnami)'rwx',对于组'rwx'而言,对于其他只是'r-x'。因此,不在组中的用户只能读取和执行,而不能写入任何内容。我假设你的PHP使用的用户不在该组中。 – MatRt 2013-03-15 05:12:41

+0

如果PHP正在被我的网络服务器执行,谁是'用户'? – 2013-03-15 05:13:42

+1

试试这个:'<?php echo exec('whoami'); ?>在脚本中告诉我们它是谁 – MatRt 2013-03-15 05:15:29

回答

2

这是因为photos/1/只能由root用户写入。为了上传工作,我们需要使该文件夹的所有者与httpd进程所有者相同,或者使其全局可写(不好的做法)。

  1. 检查Apache进程所有者:$ps aux | grep httpd。第一列将是车主通常这将是nobody

  2. 变化photos/1/业主要成为nobody或任何你在步骤1中发现

    $sudo chown nobody /home/bitnami/htdocs/lookgram/photos/1/

  3. CHMOD photo/1/现在给业主如果需要,可以由店主书写[看起来你已经有了这个]。

    $ sudo chmod -R 0755 /home/bitnami/htdocs/lookgram/photos/1/

  4. 有关详细信息,为什么这种行为发生,检查手册http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir,请注意,它也谈到open_basedir的指令。

+1

这真棒,谢谢Sumit。 我的用法是'守护进程'。所以我会为该用户进行这些更改。 – 2013-03-15 05:27:42

+0

太棒了!不客气 – 2013-03-15 05:28:40