IIS+PHP環境下文件上傳沒法訪問問題

在Windows下配置PHP運行環境,一個選擇就是IIS FastCGI,有時會遇到Apache下沒有的權限問題,文件上傳是常常遇到的一個。在講解決方案以前,咱們先來分析一下緣由。 ###IIS運行時的Windows用戶組 在IIS FastCGI方式運行時,咱們經過瀏覽器請求的Web資源有2類,一個是經由php_cgi.exe產生的內容,一部分是靜態資源,由IIS返回給用戶。這2類用戶有區別,前者是IIS_IUSERS,後者是Authenticated User或者是Anonymous。 ###PHP上傳流程 PHP上傳通常分兩個步驟,第一步,是上傳到一個upload_tmp_dir,第二步通常是這樣move_uploaded_file($file["tmp_name"], $filePath)。而移動文件是會保留其權限設置。 ###「因爲 Web 服務器上此資源的訪問控制列表(ACL)配置或加密設置,您無權查看此目錄或頁面」問題的產生 若是咱們沒有在php.ini設置upload_tmp_dir屬性,IIS默認的這個temp目錄就是C:\Windows\Temp。而咱們須要的2類用戶對這個目錄下的文件是缺少相應的權限的。 #解決方案php

  1. 在默認的temp目錄設置相應權限,右鍵->屬性->權限->添加。這種方案是不安全的,不推薦。
  2. 設置php.ini相應屬性,在指定的目錄設置相應權限,方法同上。
  3. 不使用move_uploaded_file函數,直接讀寫
相關文章
相關標籤/搜索