PHP在Windows IIS上傳的圖片無(wú)法訪(fǎng)問(wèn)的解決方法
PHP在Windows IIS上傳的圖片無(wú)法訪(fǎng)問(wèn)的解決方法
首先登錄到網(wǎng)站后臺(tái)進(jìn)行了測(cè)試發(fā)現(xiàn)上傳的圖片在確實(shí)瀏覽器打不開(kāi)且出現(xiàn)了無(wú)法訪(fǎng)問(wèn)的錯(cuò)誤信息:“ 401 - 未 授權(quán): 由于憑據(jù)無(wú)效,訪(fǎng)問(wèn)被拒絕?!?/p>
然后又測(cè)試了該服務(wù)器上其他幾個(gè)php項(xiàng)目發(fā)現(xiàn)也出現(xiàn)了一樣的錯(cuò)誤: 圖片上傳成功,但瀏覽器沒(méi)有權(quán)限訪(fǎng)問(wèn)。
因?yàn)闇y(cè)試的幾個(gè)php系統(tǒng)是不一樣的,有thinkphp,wordpress,百度ueditor編輯器。
所以這幾個(gè)系統(tǒng)同時(shí)出現(xiàn)問(wèn)題的概率實(shí)在是太小了,所以基本上排除了程序的bug,且看到上面的錯(cuò)誤就知道文件是存在的只是沒(méi)有訪(fǎng)問(wèn)的權(quán)限,于是登錄到遠(yuǎn)程桌面進(jìn)入服務(wù)器找到上傳的圖片目錄并發(fā)現(xiàn)了測(cè)試的圖片,說(shuō)明圖片是上傳成功的。
既然之前上傳的圖片可以訪(fǎng)問(wèn)且圖片也上傳成功了,那為什么新上傳的圖片卻不能訪(fǎng)問(wèn)了呢?
于是查看上傳目錄,目錄的權(quán)限已經(jīng)包含"Everyone",目錄應(yīng)該也沒(méi)有問(wèn)題(之前上傳的圖片都可以訪(fǎng)問(wèn))
然后一看測(cè)試的圖片屬性傻眼了,原來(lái)圖片的屬性中并不包含 "Everyone"項(xiàng)這跟上傳的目錄的權(quán)限不相符啊( 如果在某個(gè)目錄下新建文件,那么新建的文件是繼承該目錄的權(quán)限的 )
看到這我就想不明白了,既然目錄的權(quán)限有 "Everyone"項(xiàng)那么上傳的圖片的權(quán)限也應(yīng)該繼承父類(lèi)的權(quán)限才對(duì),所以好長(zhǎng)時(shí)間也沒(méi)有想明白這其中的原因,因此也不知道該如何下手解決,只是在網(wǎng)絡(luò)上漫無(wú)目的看有沒(méi)有類(lèi)似的問(wèn)題,并按照網(wǎng)站的說(shuō)明進(jìn)行嘗試。
最后在 windows下使用IIS配置的PHP無(wú)法上傳文件的解決方法 這篇文章的幫助下成功解決了該問(wèn)題
問(wèn)題總結(jié):
在Windows平臺(tái)下如果PHP使用的是IIS的話(huà)那么php在上傳文件時(shí)是先將文件上傳到一個(gè)臨時(shí)目錄下的
(該配置項(xiàng)可以在php.ini的" upload_tmp_dir "里進(jìn)行配置,由于我們的服務(wù)器并沒(méi)有進(jìn)行過(guò)配置 ,所以php將使用系統(tǒng)的臨時(shí)目錄"C:\Windows\Temp" )。
然后PHP再將臨時(shí)目錄中上傳的文件再移動(dòng)到你指定的目錄中去,這樣就存在一個(gè)問(wèn)題,即Temp目錄下默認(rèn)的權(quán)限是沒(méi)有相應(yīng)的IIS訪(fǎng)問(wèn)權(quán)限的(windows默認(rèn)配置),當(dāng)文件上傳到該目錄時(shí)那么上傳的文件默認(rèn)是繼承了Temp目錄的權(quán)限,而PHP再將文件文件移到指定的目錄時(shí),被移動(dòng)的文件并不會(huì)繼承移動(dòng)后所在的目錄權(quán)限,從而導(dǎo)致從瀏覽器訪(fǎng)問(wèn)被移動(dòng)的文件時(shí),因?yàn)樵撐募](méi)有相應(yīng)的權(quán)限(IIS訪(fǎng)問(wèn)權(quán)限)而無(wú)法訪(fǎng)正常問(wèn),也就出現(xiàn)了文件上傳成功但瀏覽器訪(fǎng)問(wèn)時(shí)出現(xiàn) “ 401 - 未授權(quán): 由于憑據(jù)無(wú)效,訪(fǎng)問(wèn)被拒絕。 ”的問(wèn)題。
Windows默認(rèn)的權(quán)限配置
更改后的權(quán)限配置(必須包含 IUSER和IIS_IUSERS 權(quán)限或 Everyone )
解決辦法:
給php.ini中的upload_tmp_dir項(xiàng)設(shè)置一個(gè)臨時(shí)目錄并做好相應(yīng)的權(quán)限( 推薦方法 )
將"C:\Windows\Temp"目錄添加相應(yīng)的權(quán)限
重要說(shuō)明:
php.ini 的upload_tmp_dir 目錄權(quán)限必須要包含 IUSER和IIS_IUSERS 權(quán)限
或Everyone
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- nginx配置訪(fǎng)問(wèn)圖片路徑以及html靜態(tài)頁(yè)面的調(diào)取方法
- php如何控制用戶(hù)對(duì)圖片的訪(fǎng)問(wèn) PHP禁止圖片盜鏈
- SpringMVC上傳圖片與訪(fǎng)問(wèn)
- Android互聯(lián)網(wǎng)訪(fǎng)問(wèn)圖片并在客戶(hù)端顯示的方法
- 使用AngularJS 應(yīng)用訪(fǎng)問(wèn) Android 手機(jī)的圖片庫(kù)
- 解決jsp頁(yè)面使用網(wǎng)絡(luò)路徑訪(fǎng)問(wèn)圖片的亂碼問(wèn)題
- js 利用image對(duì)象實(shí)現(xiàn)圖片的預(yù)加載提高訪(fǎng)問(wèn)速度
- Asp.Net二級(jí)域名共享Forms身份驗(yàn)證、下載站/圖片站的授權(quán)訪(fǎng)問(wèn)控制
- 輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片
- nodejs和php實(shí)現(xiàn)圖片訪(fǎng)問(wèn)實(shí)時(shí)處理
相關(guān)文章
IIS開(kāi)啟GZIP壓縮效率對(duì)比及部署方法小結(jié)
HTTP壓縮是在Web服務(wù)器和瀏覽器間傳輸壓縮文本內(nèi)容的方法。HTTP壓縮采用通用的壓縮算法如GZIP等壓縮HTML、JavaScript或CSS文件。2011-02-02怎樣通過(guò)iisapp命令查找pid來(lái)解決IIS的cpu占用率過(guò)高問(wèn)題
有些時(shí)候發(fā)現(xiàn)服務(wù)器的一些iis進(jìn)程占用資源比較大,用下面的方法可以盡快的解決。2009-03-03Fatal: the Postfix mail system is already running 解決辦法
這篇文章主要介紹了Fatal: the Postfix mail system is already running 解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12Windows下搭建apache、php、mysql過(guò)程分享
這篇文章主要介紹了Windows下搭建apache、php、mysql過(guò)程分享,本文側(cè)重從apache和php版本選擇,php線(xiàn)程安全,apache和mysql安裝啟動(dòng)服務(wù),工作環(huán)境配置這幾個(gè)方面來(lái)闡述windows下搭建apache+php+mysql過(guò)程,需要的朋友可以參考下2015-01-01Windows下SVN服務(wù)器搭建方法整理(apache)
本文向大家介紹一下Windows下SVN服務(wù)器如何搭建,主要包括軟件下載,服務(wù)器和客戶(hù)端安裝,配置用戶(hù)和權(quán)限,運(yùn)行獨(dú)立服務(wù)器和初始化導(dǎo)入等內(nèi)容2011-11-11windows10下無(wú)U盤(pán)安裝ubuntu18 使用EasyUEFI
這篇文章主要介紹了windows10下無(wú)U盤(pán)安裝ubuntu18 使用EasyUEFI(一點(diǎn)點(diǎn)體會(huì)),需要的朋友可以參考下2019-09-09云主機(jī)搭建php+mysql運(yùn)行環(huán)境教程(護(hù)衛(wèi)神 PHP套件)
這篇文章主要介紹了云主機(jī)搭建php+mysql運(yùn)行環(huán)境教程(護(hù)衛(wèi)神 PHP套件),需要的朋友可以參考下2014-11-11卸載ZkeysPHP 后iis網(wǎng)站出現(xiàn)Service Unavailable 解決辦法
原來(lái)的客戶(hù)安裝了ZkeysPHP,由于需要做安全等一些方面考慮打算全手工配置服務(wù)器,所以就卸載了ZkeysPHP2012-04-04