Kate Li (Taiwan)的部落格

首頁

關於 安樂業(php+mysql)不能上傳圖片的處理 .“文件上傳失敗!失敗原因:本地檔案系統讀寫許可權出錯“

作者 alkan 時間 2020-04-08
all

演示網站www.fcgzf.com防城港住房網

公司在做房產網,看著安樂業這個程式還可以,於是就用了個破解的。平時一直在改範本,順便新增一些資料庫資訊的調用。

前天經理測試的時候,發現圖片上傳功能錯誤。

提示:“文件上傳失敗!失敗原因:本地檔案系統讀寫許可權出錯”

於是,查看源碼,找到上傳類,看著沒有問題。所以覺得可能是服務器許可權配寘的問題。於是查看對應資料夾的用戶許可權,設定完畢,測試依然錯誤。於是就考慮是不是保存路徑錯誤,再三測試路徑沒有問題。難道是暫存檔案沒有創建?

於是彈出tmp_name,順著路徑找一下,果然沒有暫存檔案被創建,網上說可能是臨時資料夾沒有讀寫許可權,於是添加許可權。測試,錯誤依然。

順便提一下,設定php.ini上傳臨時資料夾目錄的時候,發現兩種情况。

1.upload_tmp_dir=“C:/WINDOWS/Temp”

2.upload_tmp_dir=“C:/WINDOWS/Temp”(我覺得可能是windows與linux目錄寫法不同吧)

兩種路徑寫法我測試都沒有問題,順便交代一下,我的是在windows下的iis擴展。(看到我帖子的人,要是知道原因,還請回帖提示一下,謝謝)

實在沒有辦法,檢測是不是整個程式資料夾許可權或者什麼有問題,於是自己寫了個測試文件上傳ceshi.php,發現可以上傳成功,於是鬱悶了!

(期間還做了很多測試,以下省略200字……)

就這樣耗了我一天多的時間處理這個問題。最後發現在程式根目錄下的common.inc.php下的27行有

if(!$magic_quotes_gpc){ $_FILES = c_addslashes($_FILES);}

不知道來源程式加上這個轉義是什麼意思,於是去掉,測試上傳成功!

上網查找為什麼要加addslashes()這個轉義函數,網上有一篇文章,寫的很好,自己去搜搜看吧。

個人感覺這個轉義是故意給加上的,於是貼出來解決辦法,供遇到同樣問題,或者相似問題的同仁參攷。