帝國CMS各種情況下建立目錄不成功!請檢查目錄權限的解決辦法
發揮站長的學習能力特長,百度之!
問題解決!
第一種情況,建站初期!
初次安裝帝國CMS就遇到了一個問題,在提交或者修改信息的時候提示“建立目錄不成功!請檢查目錄權限”,無法生成頁面。檢查了文件夾的讀寫權限和用戶訪問權限,發現都一切正常。那么到底是哪里出錯了呢?
其實是安裝完了帝國網站管理系統(帝國CMS)之后,沒有進行初始化內置數據的步驟,而引起的錯誤。其實只要你按照安裝說明一步一步下來就不會出錯。
解決辦法:初始化內置數據
進入“后臺 -> 系統設置 -> 數據更新中心 -> ”

依次進行如下操作(如圖所示):
1、恢復欄目目錄
2、刷新所有信息欄目頁
3、刷新所有信息內容頁面(選擇全部刷新,刷新后所有表均提示“*** 生成完畢”即可)
4、刷新所有JS調用
這樣再進行信息添加和修改,系統就不會出錯了!
第二種情況,我這種的情況!
查了好多資料才發現,是我自己設置目錄機構所致!我這里文章都是目錄式結構,例如 https://www.haoz.net/zatan/99174/ 就是一篇文章就是一個目錄!問題是我的是Linux系統,而Linux系統默認的最大文件夾是32000個,所以如果文章過多,會導致文章無法生成,因為超過了最大文件夾限制!
我發現是在一個目錄下的一級子目錄數量是有限制的,遂做了點實驗和調查,結合網上其他人寫的博客,得到如下的一些關于目錄個數和文件個數限制的結論。
1.ext3文件系統一級子目錄的個數默認為31998(個),準確地說是32000個。
Linux為了cpu的搜索效率而規定的,要想改變數目限制需要重新編譯內核。我看到在kernel代碼中有這樣的:
include/linux/ext2_fs.h:#define EXT2_LINK_MAX 32000
include/linux/ext3_fs.h:#define EXT3_LINK_MAX 32000
為什么說31998個呢?這是因為mkdir創建一個目錄時,目錄下默認就會創建兩個子目錄的,一個是.目錄(代表當前目錄),另一個是..目錄(代表上級目錄)。這兩個子目錄是刪除不掉的,“ rm . ” 會得到“rm: cannot remove `.' or `..'”的提示。所以32000-2=31998。
另外,你可以通過如下的腳本來嘗試。
| #!/bin/bash mkdir tmp cd tmp i=1 while [ $i -lt 35000 ] do mkdir $i if [ $? -ne 0 ]; then echo "cannot make dir $i" exit fi ((i++)) done |
運行這個腳本,你最后將得到“mkdir: cannot create directory `31999': Too many links”的錯誤信息。
另外,不建議在一個目錄下有太多的文件或者目錄,這回降低文件系統查找文件或目錄的性能。忽然想起阿里巴巴的圖片服務器中將圖片的存儲按照年月等分為不同的各級子目錄而不是在一個目錄下,其中一個原因也是出于性能的Linux操作系統考慮。
2.ext3文件系統下單個目錄里的最大文件數無特別的限制,是受限于所在文件系統的inode數。
我在RHEL5u5的ext3文件系統中測試,在一個目錄下,touch了100萬個文件是沒有問題的。但是肯定會受到所在文件系統的inode數的限制。
df -i /dev/sdaX或者使用tune2fs -l /dev/sdaX或者dumpe2fs -h /dev/sdaX查看可用inode數,后兩個命令輸出結果是一樣的,但是跟df所得出的可用inode數會有些誤差,其中原因,我也沒搞清楚。
網上有兩種解決inode數限制的辦法如下,不過我沒試過了。
2.1 重新mkfs,mkfs時將inode數調的多一些(根據你fs中文件的總數而定),塊尺寸調得小一些(根據每個文件的平均大小而定)
2.2 使用loopback文件系統臨時解決:在/usr中(也可以在別處)創建一個大文件,然后做成loopback文件系統,將原來的文件移到這個文件系統中,并將它mount到/usr下合適的位置。這樣可以大大減少你/usr中的文件數目。但是系統性能會有點損失。
3.默認打開文件個數(文件描述符)限制(默認是1024個)
ulimit -n 命令可以查看
修改這個限制可以使用ulimt -SHn 65535 命令
還可以在/etc/security/limit.conf 里設置用戶打開文件數、進程數、CPU等信息
4.ext3文件系統下filename最大字符長度(默認255個英文字符)
LENTH=`for i in {1..255};do for x in a;do echo -n $x;done;done`
touch $LENTH
當增加到256時,touch報錯,File name too long
linux系統下ext3文件系統內給文件/目錄命名,最長只能支持127個中文字符,英文則可以支持255個字符
刪除一些不必要的文件后問題解決,可是還有一個隱患,后面還是得解決!這只是目前暫時這樣!
| 留言與評論(共有 0 條評論) |


