Linux — PHP fopen выдает прерывистую ошибку, не удается открыть поток: на устройстве не осталось места

Это странная ошибка, с которой я столкнулся, мой скрипт php периодически выдает ошибку не удалось открыть поток: на устройстве не осталось места всякий раз, когда я пытаюсь сгенерировать текстовый файл и записать в него некоторый пользовательский контент. Но на моем диске достаточно места.

Код, который я использую ниже:

$fp=fopen('../user1/dataProduct.txt','w');
fwrite($fp, 'Demo Text of Products');
fclose($fp);

Если я сделаю: df -H
df -H результаты

Ошибка:
PHP Warning: fopen(../user1/dataProduct.txt): failed to open stream: No space left on device in /home/goashopping/public_html/sell/userprod.php on line 192
PHP Warning: fwrite() expects parameter 1 to be resource, boolean given in /home/goashopping/public_html/sell/userprod.php on line 195

Пожалуйста, помогите мне в решении этой проблемы.

4

Решение

Проверьте бесплатные иноды с df -i

you@yourbox:~$ df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1             532480   46391  486089    9% /

Файловые системы с большим количеством маленьких файлов обычно исчерпывают inode, прежде чем заканчиваются места. Если это ваш случай, вам нужно перестроить файловую систему и использовать mkfs -i увеличить доступные на нем иноды.

9

Другие решения

Возможно, на диске недостаточно свободных инодов, проверьте это:

df -i

А также прочитайте это Не осталось свободного места на устройстве

1

Я согласен с тем, что, похоже, это проблема inode, но я тоже периодически сталкивался с этой проблемой. Это произошло в только один каталог.

file_put_contents (/archive/ETG/content/original/173530/event/173530_unplanned_outage_rd_20150107_fd_20150107_152715_6.pdf): не удалось открыть поток: на устройстве не осталось места

$php --version
PHP 5.3.28 (cli) (built: Jun 27 2014 15:36:16)
$uname -ior
2.6.18-238.19.1.el5 x86_64 GNU/Linux

$df -ih /archive
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/mapper/vg03--archive-archive
669M     57M    613M    9% /archive
$df -h /archive
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg03--archive-archive
5.2T  3.9T  1.1T  79% /archive

$mount |grep archive
/dev/mapper/vg03--archive-archive on /archive type ext3 (rw)

$find /archive/ETG/content/original/173530/event -type d -prune -ls
21610738 779840 drwxrwxrwx   3 gasconcoll gasconcoll 797769728 Jan  7 10:28 /archive    /ETG/content/original/173530/event

$ls -altr /archive/ETG/content/original/173530/event/ |wc -l
8000842

$du -sh /archive/ETG/content/original/173530/event
49G

Я решил проблему, выполнив следующие действия:

$mkdir /archive/ETG/content/original/173530/event_new
$chmod ugo+rwX /archive/ETG/content/original/173530/event_new
$mv /archive/ETG/content/original/173530/event /archive/ETG/content/original/173530/event_old
$mv /archive/ETG/content/original/173530/event_new /archive/ETG/content/original/173530/event
$rsync -av /archive/ETG/content/original/173530/event_old/ /archive/ETG/content/original/173530/event

Я больше не испытываю эту ошибку. У меня нет достаточно времени, чтобы копать дальше, но подумал, что вы, возможно, захотите узнать, что сработало для меня.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector