$file='/data0/htdocs/www.25229.com/data/block/687-accept_service-order_str.data';
$mod='a+';
if(!$fp = fopen($file, $mod)) {
echo '1';
}else{
echo '2';
}
報fopen: failed to open stream: No space left on device ,換一個檔案名稱就不報錯,可以建立檔案,直接在伺服器用命令建檔案也是報同樣的錯,例如:改成"687-accept_service-order_str.data1"就不報錯,實際硬碟上還有很多空間
該分區裡的目錄數限制也沒有問題,分區格式是:ext4的
為什麼換一個檔案名稱就沒有問題,頭痛中!!!
回複討論(解決方案)
是不是字元的問題呢?
在西文狀態下再打一遍
沒問題,換目錄都可以建檔案,就是這個"/data0/htdocs/www.25229.com/data/block/"目錄不能這個名稱的檔案,
用你的代碼測試過,一切正常,輸出2。
既然改其他檔案名稱可以,那就不可能是空間不夠了。
試試把$mod='a+'; 改成r試試能不能讀出。
不行,只有這個目錄"block"不能建立檔案,其它的目錄下沒有問題,但這個目錄下換個檔案名稱就以,
實際這個檔案也沒存在,在伺服器上直接用命令列建立檔案也不行,和程式好像無關,但是就不知道是什麼原因就這個名稱在這目錄下不能建立,在其它目錄又可以,該目錄下檔案數:7718686個檔案,不過也沒超過分區限制的"inodes"數
都有小兩萬個檔案了,不能排除你那個檔案因損壞造成不能 a+
rm /data0/htdocs/www.25229.com/data/block/687-accept_service-order_str.data
rm: cannot remove `/data0/htdocs/www.25229.com/data/block/687-accept_service-order_str.data': No such file or directory
檔案不存在,
touch /data0/htdocs/www.25229.com/data/block/687-accept_service-order_str.data 時提示No space left on device
但這個目錄下建其它檔案又可以,只要名稱不一樣就可以
其實這是典型的檔案目錄資訊被損壞的表現
每個檔案在目錄檔案中都有一項,標誌著這個檔案在硬碟上的位置,佔用的扇區數以及其他管理資訊。
只要其中某個位元組損壞了,就可能引發各種問題
你可以把整個目錄複寫到新目錄下,然後去刪除原目錄,此時你就可能會發現這個目錄刪不掉。出現這種情況就很麻煩了,簡單的處理就是把能刪的都刪掉。改用新目錄就是了。如果你有檔案粉碎機,也可以嘗試用一下
當然能刪掉就最好了,把複製的新目錄改名回去就可以了
刪除目錄會影響網站的使用呀,網站裡面的資料都在裡面
而且這個目錄自動丟失檔案,只要丟失的檔案,就不能再次建立設了,只有這個目錄會這樣
是的,刪除是會有些影響,但不是跟你說了複製一份嗎?
做的時候當然要在訪問量不大的時候進行,發個公告。不會有太大的影響
目錄會丟失檔案,表示目錄中檔案太多,片段太多。也可能是磁軌老化造成的
總之讓目錄在硬碟上換個位置,是有益無害的
解決檔案太多的問題,可能涉及程式修改,可先放一放
應該是目錄問題,我直接 mount --bind 一個新目錄就可以了,謝謝了