2013-03-15 92 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