學程式的道路上.....我跌跌撞撞的過程
文章為我平時發生錯誤的解決方法
因為擔心下次碰到時會忘記
所以就將他筆記下來了
如果有大大發現我的敘述錯誤
或者有哪些更有效率的方法
也請大大們不吝嗇的提供指教
謝謝~
有一次當自己在做上團圖片的功能時,依照書本建議的可以將上傳的圖片移動至自己指定的資料夾
(基本上若沒有將圖片移動,都會存放在/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
從這錯誤訊息可以看出:
- Permission denied=> 沒有權限
- Unable to move => 不能移動
基本上檔案都是自己建立的,那怎麼會沒有移動權限呢?
這時就該檢查自己資料夾本身的權限了
這時,我們可以透過Linux的指令 ll 進行查看目前資料夾的權限
所以我們在執行Linux的指令chmod,進行權限更改
若對chmod這指令不熟的可以去看鳥哥的介紹
所以,只要將資料夾的權限跟改成向上方圖片的PHP資料夾一樣就可以囉~
簡單來說就是執行「chmod 777 你的資料夾名稱」,但執行玩不代表都好囉~
這時請進入你自己的資料夾底下,一樣使用Linux的指令 ll 進行查看全部的權限
是否都為777了,如果都是777那就可以正常執行 move_uploaded_file() 函式了
權限一定要777喔,有嘗試過775也一樣會出ㄝ現相同的錯誤訊息
原因是,Linux底下,權限主要分為三個身份
分別是:
- 管理者(owner)
- 群組(group)
- 其他(other)
而這三個身份,又分別擁有:
- 讀(r)=>4分
- 寫(w)=>2分
- 執行(x)=>1分
順序為 r w x ,分數由來分別是 2*2 ,2*1, 2*0(計算計概論)
所以用775的權限,少了讓「其他」的使用者可以「寫」,才一樣會產生錯誤
所以千萬千萬要使用777的權限
/tmp 本身的權限也要改成 777 唷