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

首頁 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)在服務(wù)器端生成了唯一的文件名。
代碼
接下來我們應(yīng)該做的就是把文件從臨時(shí)位置移動(dòng)到固定位置,于是乎我就寫了以下腳本:

//把文件從臨時(shí)位置移動(dòng)到固定位置@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ì)跳轉(zhuǎn)到錯(cuò)誤頁,當(dāng)我執(zhí)行執(zhí)行上面的腳本時(shí),腳本跳轉(zhuǎn)到了錯(cuò)誤頁,很明顯是出錯(cuò)了,首先我排查了一下我的函數(shù)參數(shù)是否出現(xiàn)了錯(cuò)誤:

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

@運(yùn)算符

注:在代碼中要慎用PHP的 @ 運(yùn)算符,
@運(yùn)算符可以屏蔽掉所有可能來自用戶輸入無效的問題或者SQL查詢包含了一個(gè)不正確的列、甚至是一個(gè)不規(guī)范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腳本的用戶和我寫腳本代碼、創(chuàng)建圖片文件夾的用戶不是同一個(gè)用戶

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

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

修改圖片固定存放文件夾的所屬用戶,將其修改為運(yùn)行apache執(zhí)行PHP腳本的用戶。
將文件夾的權(quán)限改為755
那么運(yùn)行apache的用戶是誰呢,我們利用PHP腳本獲?。?/p>

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

?

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系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脫衣機(jī)

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)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1501
276