国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) php教程 php手冊(cè) 解決PHP move_uploaded_file函數(shù)移動(dòng)圖片失敗

解決PHP move_uploaded_file函數(shù)移動(dòng)圖片失敗

Sep 30, 2016 am 09:23 AM

出現(xiàn)的問題描述:
今天在實(shí)現(xiàn)一個(gè)在用戶註冊(cè)時(shí)上傳頭像圖片檔案的PHP腳本時(shí),出現(xiàn)了問題:PHP腳本在前面已經(jīng)確定

瀏覽器端上傳檔案沒有錯(cuò)誤。
上傳的文件是合法的。
上傳的檔案是圖像檔案。
已經(jīng)在伺服器端產(chǎn)生了唯一的檔案名稱。
程式碼
接下來我們應(yīng)該要做的就是把檔案從臨時(shí)位置移到固定位置,所以乎我就寫了以下腳本:

//把檔案從暫存位置移到固定位置@move_uploaded_file($_FILES[$image_fieldname]['tmp_name'], $upload_filename) or handle_error("儲(chǔ)存圖片檔案出錯(cuò)", "移動(dòng)檔案出錯(cuò)" . "{$upload_filename }");
程式碼handle_error()函數(shù)是我自己定義的錯(cuò)誤處理函數(shù),當(dāng)move_uploaded_file函數(shù)執(zhí)行出錯(cuò)時(shí),就會(huì)跳到錯(cuò)誤頁(yè),當(dāng)我執(zhí)行執(zhí)行上面的腳本時(shí),腳本跳到了錯(cuò)誤頁(yè),很明顯是出錯(cuò)了,首先我排查了一下我的函數(shù)參數(shù)是否出現(xiàn)了錯(cuò)誤:

$_FILES[$image_fieldname]['tmp_name']$upload_filename //是我自己組合的檔案路徑,保證沒錯(cuò)
根據(jù)PHP 手冊(cè),我傳入函數(shù)的上述兩個(gè)參數(shù)都是能保證沒有問題的,這麼怎麼回事呢,頁(yè)面中都沒有報(bào)錯(cuò)(在函數(shù)的前面我使用了PHP的“@”運(yùn)算符,所以頁(yè)面才不會(huì)報(bào)錯(cuò))

@運(yùn)算符

註:在程式碼中要慎用PHP的@ 運(yùn)算符,
@運(yùn)算子可以屏蔽掉所有可能來自使用者輸入無效的問題或SQL查詢包含了一個(gè)不正確的列、甚至是一個(gè)不規(guī)範(fàn)URL 錯(cuò)誤都可以避免了,程式碼甚至可以不檢查由使用者、自己或帶那產(chǎn)生的錯(cuò)誤,簡(jiǎn)而言之,@運(yùn)算子可以屏蔽掉程式碼的錯(cuò)誤訊息,一個(gè)流行網(wǎng)站經(jīng)常使用@,因?yàn)樗鼈兏静荒鼙罎⒒蛲V?,但是在這種情況下要使用其他解決錯(cuò)誤的方案。

尋找error log檔
當(dāng)時(shí)我並沒有意識(shí)到@運(yùn)算子對(duì)出錯(cuò)訊息的屏蔽,我就想去找apache的error log 錯(cuò)誤日誌檔看看,由於我在搭建PHP開發(fā)環(huán)境的時(shí)候使用的是xampp這樣的開發(fā)套件,所以error_log檔案跟網(wǎng)路上大部分文章說的不一樣,最後我在
(我的主機(jī)是ubuntu)

/opt/lampp/logs
路徑下找到了php_error_log文件,當(dāng)然這個(gè)路徑下還存放著apache的error_log文件,在php_error_log文件中我看到了出錯(cuò)問題:權(quán)限不夠,我終於找到了出錯(cuò)的地方:我們存放圖片的目的目錄對(duì)執(zhí)行PHP的使用者來說是沒有權(quán)限的,執(zhí)行PHP腳本的使用者和我寫腳本程式碼、建立圖片資料夾的使用者不是同一個(gè)使用者

其實(shí)我們本來不用這麼麻煩,我們只要將函數(shù)前面的@運(yùn)算子去掉,然後去掉錯(cuò)誤處理函數(shù)handle_error()函數(shù),然後我們 就可以在web頁(yè)面看到出錯(cuò)訊息了。

修改目標(biāo)資料夾權(quán)限
不管怎麼樣,我們還是找到了問題的根源,這是一件很值得高興的事情,既然資料夾所屬使用者和權(quán)限不對(duì),那麼我們只要修改這些問題即可:

修改圖片固定存放資料夾的所屬用戶,將其修改為執(zhí)行apache執(zhí)行PHP腳本的用戶。
將資料夾的權(quán)限改為755
那麼執(zhí)行apache的使用者是誰呢,我們利用PHP腳本取得:

echo exec('whoami'); //取得執(zhí)行該檔案的用戶名,從而修改圖片資料夾的權(quán)限
這樣我得到了執(zhí)行腳本的用戶為:daemon,你們得到的很可能跟我的不一樣。
下面我們來修改資料夾的所屬使用者:

chown daemon -R ~/web/hello_php/uploads
~/web/hello_php/uploads是我存放圖片的目標(biāo)路徑,-R代表遞歸的給這個(gè)目錄下的資料夾修改所屬使用者。

接著修改資料夾權(quán)限

chmod 775 -R ~/web/hello_php/uploads
這樣我們就大功告成了,

?

參考閱讀:http://www.manongjc.com/article/1494.html

?

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72