[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как узнать причину неудачи fread?
vasilisk
Небольшая такая проблемка - функции PHP fread и ftruncate не работают, как описано - fread возвращает пустой буфер, а ftruncate возвращает false и не режет файл. Права на файл - выписаны, какие надо. Как узнать, чем именно они недовольны?

Более точно - меня интересует некий аналог стандартного С-шного errno, который, используй я эти функции в сишнике немедленно сказал бы мне в чём дело. А здесь как?

Предлагать error_reporting не надо - "вербательные" параметры сервера выкручены по-максиму в E_ALL и он ничего не говорит в данном случае. Попытка перехватить чего-нибудь куда-нибудь записываемое за спиной в лог через set_errorhandler ни к чему не приводит - не вызывается обработчик ошибок, т.е. провальную работу ftruncate сам интерпретатор не считает ошибкой.

Что делать, кроме шаманства?



Спустя 20 часов, 27 минут, 11 секунд (30.05.2010 - 19:12) Kuzya написал(а):
Помоему такого нет. В официальной документации сказано что fread в случае неудачи возвращает просто false. Может какой параметр указать забыли?

Спустя 8 часов, 18 минут, 44 секунды (31.05.2010 - 03:31) vasilisk написал(а):
Цитата (Kuzya @ 30.05.2010 - 16:12)
Помоему такого нет. В официальной документации сказано что fread в случае неудачи возвращает просто false. Может какой параметр указать забыли?

Если параметр из числа обязательных не указан - интерпретатор ругается. Т.е. идут сообщения. А здесь - нет ничего. Т.е. как я догадываюсь, там, в недрах интерпретатора просто вызывается fread и возвращается её буфер. А всякие errno - просто игнорируются. Вот я и хочу узнать - а как можно это errno извлечь? Ведь в libC эта errno есть...

Проблему можно обобщить на все функции файловой системы - как узнать, почему они провалились? И узнать не "программисту", а "программе" - ведь не всегда же программист сопровождает исполнение скрипта? Как приделать интеллектуальную реакцию программы на провал файловой операции? Скажем, я записываю файл, а прав на запись не хватает. Как сказать пользователю, что есть отсутствие именно прав, а не чего другое, переполнение диска, например или блокировка файла другим процессом?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.