PHP在Windows IIS上傳的圖片無法訪問的解決方法
PHP在Windows IIS上傳的圖片無法訪問的解決方法
首先登錄到網(wǎng)站后臺進(jìn)行了測試發(fā)現(xiàn)上傳的圖片在確實瀏覽器打不開且出現(xiàn)了無法訪問的錯誤信息:“ 401 - 未 授權(quán): 由于憑據(jù)無效,訪問被拒絕?!?/p>

然后又測試了該服務(wù)器上其他幾個php項目發(fā)現(xiàn)也出現(xiàn)了一樣的錯誤: 圖片上傳成功,但瀏覽器沒有權(quán)限訪問。
因為測試的幾個php系統(tǒng)是不一樣的,有thinkphp,wordpress,百度ueditor編輯器。
所以這幾個系統(tǒng)同時出現(xiàn)問題的概率實在是太小了,所以基本上排除了程序的bug,且看到上面的錯誤就知道文件是存在的只是沒有訪問的權(quán)限,于是登錄到遠(yuǎn)程桌面進(jìn)入服務(wù)器找到上傳的圖片目錄并發(fā)現(xiàn)了測試的圖片,說明圖片是上傳成功的。
既然之前上傳的圖片可以訪問且圖片也上傳成功了,那為什么新上傳的圖片卻不能訪問了呢?
于是查看上傳目錄,目錄的權(quán)限已經(jīng)包含"Everyone",目錄應(yīng)該也沒有問題(之前上傳的圖片都可以訪問)

然后一看測試的圖片屬性傻眼了,原來圖片的屬性中并不包含 "Everyone"項這跟上傳的目錄的權(quán)限不相符啊( 如果在某個目錄下新建文件,那么新建的文件是繼承該目錄的權(quán)限的 )

看到這我就想不明白了,既然目錄的權(quán)限有 "Everyone"項那么上傳的圖片的權(quán)限也應(yīng)該繼承父類的權(quán)限才對,所以好長時間也沒有想明白這其中的原因,因此也不知道該如何下手解決,只是在網(wǎng)絡(luò)上漫無目的看有沒有類似的問題,并按照網(wǎng)站的說明進(jìn)行嘗試。
最后在 windows下使用IIS配置的PHP無法上傳文件的解決方法 這篇文章的幫助下成功解決了該問題
問題總結(jié):
在Windows平臺下如果PHP使用的是IIS的話那么php在上傳文件時是先將文件上傳到一個臨時目錄下的
(該配置項可以在php.ini的" upload_tmp_dir "里進(jìn)行配置,由于我們的服務(wù)器并沒有進(jìn)行過配置 ,所以php將使用系統(tǒng)的臨時目錄"C:\Windows\Temp" )。

然后PHP再將臨時目錄中上傳的文件再移動到你指定的目錄中去,這樣就存在一個問題,即Temp目錄下默認(rèn)的權(quán)限是沒有相應(yīng)的IIS訪問權(quán)限的(windows默認(rèn)配置),當(dāng)文件上傳到該目錄時那么上傳的文件默認(rèn)是繼承了Temp目錄的權(quán)限,而PHP再將文件文件移到指定的目錄時,被移動的文件并不會繼承移動后所在的目錄權(quán)限,從而導(dǎo)致從瀏覽器訪問被移動的文件時,因為該文件沒有相應(yīng)的權(quán)限(IIS訪問權(quán)限)而無法訪正常問,也就出現(xiàn)了文件上傳成功但瀏覽器訪問時出現(xiàn) “ 401 - 未授權(quán): 由于憑據(jù)無效,訪問被拒絕。 ”的問題。
Windows默認(rèn)的權(quán)限配置

更改后的權(quán)限配置(必須包含 IUSER和IIS_IUSERS 權(quán)限或 Everyone )

解決辦法:
給php.ini中的upload_tmp_dir項設(shè)置一個臨時目錄并做好相應(yīng)的權(quán)限( 推薦方法 )
將"C:\Windows\Temp"目錄添加相應(yīng)的權(quán)限
重要說明:
php.ini 的upload_tmp_dir 目錄權(quán)限必須要包含 IUSER和IIS_IUSERS 權(quán)限
或Everyone
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
- nginx配置訪問圖片路徑以及html靜態(tài)頁面的調(diào)取方法
- php如何控制用戶對圖片的訪問 PHP禁止圖片盜鏈
- SpringMVC上傳圖片與訪問
- Android互聯(lián)網(wǎng)訪問圖片并在客戶端顯示的方法
- 使用AngularJS 應(yīng)用訪問 Android 手機的圖片庫
- 解決jsp頁面使用網(wǎng)絡(luò)路徑訪問圖片的亂碼問題
- js 利用image對象實現(xiàn)圖片的預(yù)加載提高訪問速度
- Asp.Net二級域名共享Forms身份驗證、下載站/圖片站的授權(quán)訪問控制
- 輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片
- nodejs和php實現(xiàn)圖片訪問實時處理
相關(guān)文章
無法進(jìn)入遠(yuǎn)程桌面遠(yuǎn)程重啟WIN2003服務(wù)器的方法
如何無法進(jìn)入遠(yuǎn)程桌面有什么辦法遠(yuǎn)程重啟WIN2003服務(wù)器?下面有個不錯的方法,大家可以參考下2014-01-01
Almp 安卓系統(tǒng)上搭建本地php服務(wù)器環(huán)境的步驟
在網(wǎng)上找到安卓系統(tǒng)的PHP+MySQL環(huán)境,甚是喜歡,拿來修改、試用了一番。已經(jīng)實現(xiàn)在安卓手機上搭建Web服務(wù)端,并且支持WordPress、Discuz、Phpmyadmin的運行2013-07-07
在64bit Win2008上運行Asp+Access網(wǎng)站的一些設(shè)置
這篇文章主要介紹了在64bit Win2008上運行Asp+Access網(wǎng)站的一些設(shè)置,需要的朋友可以參考下2015-01-01
windows服務(wù)器實現(xiàn)NAT端口映射的項目實踐
很多時候由于業(yè)務(wù)需要要開放一些端口,又擔(dān)心遭受到網(wǎng)絡(luò)攻擊,不得不采取一些方式進(jìn)行端口的映射和隱藏,本文主要介紹了windows服務(wù)器實現(xiàn)NAT端口映射的項目實踐,感興趣的可以了解一下2023-08-08
Windows server 2012遠(yuǎn)程桌面會話主機和遠(yuǎn)程桌面授權(quán)
對于windows server2012服務(wù)器一般都是默認(rèn)能夠支持兩用戶遠(yuǎn)程登錄,而通過安裝遠(yuǎn)程桌面服務(wù)里的遠(yuǎn)程桌面會話主機和遠(yuǎn)程桌面授權(quán),并對其進(jìn)行配置,即可實現(xiàn)多用戶遠(yuǎn)程登錄2017-04-04
IIS 服務(wù)器備份轉(zhuǎn)移實現(xiàn)方法
最近上了一個項目,讓我不管通過任何的方法要把一臺IIS服務(wù)器的所有虛擬主機全部轉(zhuǎn)移到另外一臺機,其實很早就因為IIS服務(wù)器的問題而傷腦筋,終于在我的努力下通過VBSCRIPT的腳本實現(xiàn)了這個目標(biāo),不敢獨想,和廣大網(wǎng)友共享。2009-03-03
windows使用nginx實現(xiàn)網(wǎng)站負(fù)載均衡測試實例
如果你關(guān)注過nginx,必定知道nginx這個軟件有什么用的,如果你的網(wǎng)站訪問量越來越高,一臺服務(wù)器已經(jīng)沒有辦法承受流量壓力,那就增多幾臺服務(wù)器來做負(fù)載吧。2010-03-03
Winserver2019搭建主輔域名解析服務(wù)器的方法
本文主要介紹了Winserver2019搭建主輔域名解析服務(wù)器的方法,詳細(xì)的介紹了主輔域名服務(wù)器配置及其報錯的解決方法,具有一定的參考價值,感興趣的可以了解一下2024-04-04

