Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Warning: fread(): Length parameter must be greater than 0 in ****/system/library/cache/file.php on line 32


Recommended Posts

Народ выручайте, ошибка появилась несколько дней назад

 

Warning: fread(): Length parameter must be greater than 0 in ****/system/library/cache/file.php on line 32

 

выскакивает при оформлении заказа. и клиенты не могут оформить заказ до конца. Сообщение на емейл не отправляется, хотя до этого все работало ок.  В ручном режиме с почты сайта все отправляется.

 

Гуглил ошибку эту, пишут что из за нехватки места на хосттинге. но там его еще много.

 

В тупике пока что.

Link to comment
Share on other sites


Попробуйте ещё поискать через гугл с указанием адреса форума.

Link to comment
Share on other sites

Ну если вопрос в мощности хостинга, но не думаю что в этом дело. товаров не много на сайте, может 200-250. это ерунда.

Link to comment
Share on other sites


судя по предупреждению, размер файла нулевой

посмотри что находит в кеше функция $files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');

и дальше смотри сам файл

Link to comment
Share on other sites

On 5/11/2022 at 7:28 PM, esculapra said:

судя по предупреждению, размер файла нулевой

посмотри что находит в кеше функция $files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');

и дальше смотри сам файл

запрос в базе данных делать этот ?

 

п.с. места на хостинге 10/50гб занято

Link to comment
Share on other sites


Это в функции из файла file.php

    public function get($key) {
        $files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');

        if ($files) {
            $handle = fopen($files[0], 'r');

            flock($handle, LOCK_SH);

            $data = fread($handle, filesize($files[0]));

            flock($handle, LOCK_UN);

            fclose($handle);

            return json_decode($data, true);
        }

        return false;
    }

 

допиши в файл функцию

     private function log($message)
         {
           $handle = fopen('ah.log','a');
           fwrite($handle,print_r(array($message),true));
           fclose($handle);
         }

и выведи в лог данные

    public function get($key) {
        $files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');

        if ($files) {

$this->log($files[0]);

$this->log(filesize($files[0]));
            $handle = fopen($files[0], 'r');

            flock($handle, LOCK_SH);

            $data = fread($handle, filesize($files[0]));

            flock($handle, LOCK_UN);

            fclose($handle);

            return json_decode($data, true);
        }

        return false;
    }

получишь название файла и его размер - дальше разбирайся

  • +1 1
Link to comment
Share on other sites

Posted (edited)

спасибо, все сделал так, а куда должно выводиться сообщение об ошибке с указанием файла ? в журнал ошибок ? но там все по прежнему, только ссылка на строчку кода ошибки.

 

правил в: **/system/library/cache/file.php

Edited by daemontools
Link to comment
Share on other sites


при отключении модуля "почта россии" ошибка пропадает. Но заказ все равно не оформляется до конца, и сообщение на емейл не отправляется.

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.