close

學程式的道路上.....我跌跌撞撞的過程

文章為我平時發生錯誤的解決方法

因為擔心下次碰到時會忘記

所以就將他筆記下來了

如果有大大發現我的敘述錯誤

或者有哪些更有效率的方法

也請大大們不吝嗇的提供指教

謝謝~


有一次當自己在做上團圖片的功能時,依照書本建議的可以將上傳的圖片移動至自己指定的資料夾

(基本上若沒有將圖片移動,都會存放在/tmp底下)

可是當我使用PHP提供的 「move_uploaded_file()」這一個函式時,卻出現下方兩行的錯誤

Warning  move_uploaded_file(xxxxx) [function.move-uploaded-file]: failed to open stream: Permission denied in <b>xxxxxxxxxxxxxxxxxxxxxxxxxxx.php on line xxx

Warning:  move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpJtBlbi' to 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.php on line xxxx

 

從這錯誤訊息可以看出:

  1. Permission denied=> 沒有權限
  2. Unable to move => 不能移動

基本上檔案都是自己建立的,那怎麼會沒有移動權限呢?

這時就該檢查自己資料夾本身的權限了

這時,我們可以透過Linux的指令 ll 進行查看目前資料夾的權限

所以我們在執行Linux的指令chmod,進行權限更改

若對chmod這指令不熟的可以去看鳥哥的介紹

所以,只要將資料夾的權限跟改成向上方圖片的PHP資料夾一樣就可以囉~

簡單來說就是執行「chmod 777 你的資料夾名稱」,但執行玩不代表都好囉~

這時請進入你自己的資料夾底下,一樣使用Linux的指令 ll 進行查看全部的權限

是否都為777了,如果都是777那就可以正常執行 move_uploaded_file() 函式了

權限一定要777喔,有嘗試過775也一樣會出ㄝ現相同的錯誤訊息

原因是,Linux底下,權限主要分為三個身份

分別是:

  1. 管理者(owner)
  2. 群組(group)
  3. 其他(other)

而這三個身份,又分別擁有:

  1. 讀(r)=>4分
  2. 寫(w)=>2分
  3. 執行(x)=>1分

順序為 r w x ,分數由來分別是 2*2 ,2*1, 2*0(計算計概論)

所以用775的權限,少了讓「其他」的使用者可以「」,才一樣會產生錯誤

所以千萬千萬要使用777的權限

/tmp 本身的權限也要改成 777 唷

 

arrow
arrow
    文章標籤
    PHP error
    全站熱搜

    Neil 發表在 痞客邦 留言(0) 人氣()