discuz X 解決頭像無法保存 error code

[原創] 處理 discuz X 頭像保存過程中發生網絡錯誤,請重試!error code:0




於頭像保存時,出現上圖那個錯誤訊息

1、首先確定uc通連是否設置正常,此問題dz官網或AL8論壇有一堆解決文章,請自行查找

2、avatar裡面的目錄無法777,這是主機用戶權限設置問題,參考下述說明

原因:當前php執行用戶與ftp用戶不是同一個時,mkdir及chmod是無法變更目錄的讀取權限,如圖






avatar是ftp用戶,而000是php用戶創建,2者是不同用戶

使用ftp是無法修改000目錄為777的,有些人說刪掉000,由ftp創建000就好,這是鬼扯蛋,少數目錄還行,但保放頭像的3層目錄是抓uid拆解命名,不可能每個會員上傳一次頭像,你就用ftp刪除目錄後重建,解決方法

A、回報主機商,請他們將php及ftp執行用戶設置為同一個,由於我對unix系統不熟,無法詳細解說,不過管主機的人,可以網上查找相關文章處理

B、如果主機商無法修改或不打算回報,那麼就只能修改php代碼的方式來處理,原理就是使用php內的ftp函數來創建目錄,這樣用戶就會相同了,參考

1、下載 /uc_server/model/base.php 文件

2、請使用 notepad++ 之類文書體件打開它,不要用windows內建記事本

3、大約在300多行的位置,找到function set_home,在這上方添加下述代碼

function mkDirFix($savePath){

$ftphost = '';
$ftpuser = '';
$ftppass = '';
$avatarpath = '';

$currpath = $avatarpath.$savePath;
$conn_id = @ftp_connect($ftphost);
if(!$conn_id){ return false; }
if(@ftp_login($conn_id,$ftpuser,$ftppass)){
if(!@ftp_chdir($conn_id,$currpath)){
if(!@ftp_mkdir($conn_id,$currpath)){
@ftp_close($conn_id);
return false;
}
@ftp_chmod($conn_id,0777,$currpath);
}
}
@ftp_close($conn_id);
}

添加後,參考圖




4、將function set_home內的3行mkdir替換成下述代碼

!is_dir($dir.'/'.$dir1) && $this->mkDirFix($dir1);
!is_dir($dir.'/'.$dir1.'/'.$dir2) && $this->mkDirFix($dir1.'/'.$dir2);
!is_dir($dir.'/'.$dir1.'/'.$dir2.'/'.$dir3) && $this->mkDirFix($dir1.'/'.$dir2.'/'.$dir3);

替換前,參考圖




替換後,參考圖




5、參數 $avatarpath 設置

ftp連線的 位址、帳號、密碼 這3項看圖就明白,唯獨 $avatarpath 則需要另外說明

請先用ftp連入你的主機,然後直接到/uc_server/data/avatar/保存頭像的目錄,並copy相關位址




注意 → 如果創建目錄的用戶與ftp不同,記得滑鼠右鍵刪除掉該目錄


6、填入4個參數值




記得 → $avatarpath參數,最後面需補上 / 斜線


7、存檔後,上傳覆蓋掉原本的 /uc_server/model/base.php 文件,就大功告成了 good job





後記

$avatarpath卡了我很久,用了好幾小時,正想沒救了打算放棄,後來不小心關掉filezilla,後重開在連入主機,怎麼在根目錄下有個000,原來是找不到地方建,就建在根目錄,也就是我的代碼沒錯,是我將ftp起始的path搞錯了,修正$avatarpath的path之後,沒想到成功了

找了一個超長path範例,參考下圖




相關文章 → discuz X 上傳頭像 教學


返回目錄 → ( Discuz X 論壇 ) 之使用教學,連結總整理


Thank you for reading

沒有留言:

張貼留言

由於經常被灌水, 所以您再發表留言之後, 需要耐心的等待博客主之審核, 於審核過後才會公開您的留言, 因此請您不要重複的留言, 謝謝您的留言
Hello my friend, I have no money, My blog is super chill, Please do not screw me in the replies at the bottom of the article, thank you very much