Журнал ошибок в ocStore

maximka77
На сайте с 15.10.2011
Offline
227
281

Подскажите, пожалуйста. На сайте периодически в журнале ошибок появляется примерно такое:

2020-09-28 19:36:46 - PHP Warning:  fopen(сайт.ру/storage/cache/cache.seopro.cat_tree.1601325405): failed to open stream: No such file or directory in сайт.ру/system/library/cache/file.php on line 28
2020-09-28 19:36:46 - PHP Warning:  flock() expects parameter 1 to be resource, boolean given in сайт.ру/html/system/library/cache/file.php on line 30
2020-09-28 19:36:46 - PHP Warning:  filesize(): stat failed for сайт.ру/storage/cache/cache.seopro.cat_tree.1601325405 in сайт.ру/system/library/cache/file.php on line 32
2020-09-28 19:36:46 - PHP Warning:  fread() expects parameter 1 to be resource, boolean given in сайт.ру/system/library/cache/file.php on line 32
2020-09-28 19:36:46 - PHP Warning:  flock() expects parameter 1 to be resource, boolean given in сайт.ру/system/library/cache/file.php on line 34
2020-09-28 19:36:46 - PHP Warning:  fclose() expects parameter 1 to be resource, boolean given in сайт.ру/system/library/cache/file.php on line 36

Файл /system/library/cache/file.php выглядит в этом месте так:


Подскажите, из-за чего это и как это можно исправить? Заранее благодарен.

- Дизайн-радиаторы отопления ( https://velarshop.ru/design/) - Зарабатываю в РСЯ через ( https://app.adprofit.world/login/registration?u=219 ) пока что мне нравится, выплаты получаю каждый понедельник на USDT - Заказать обратные внешние ссылки с главных страниц PBN ( https://tier1.shop/ )
Алеандр
На сайте с 08.12.2010
Offline
183
#1
maximka77 :
Подскажите, из-за чего это и как это можно исправить? Заранее благодарен.

Отсутствует файл, с которым должны производиться действия. Возможно, что файл должен создаваться ранее автоматически, может быть проблема в правах на папку, т.е. этот файл невозможно там создать из-под пользователя, из-под которого работает скрипт. Это или юзер apache может быть или юзер с именем вашего аккаунта FTP и т.д., смотря что за сервер/хостинг. Следовательно, нужно проверить права на эту самую папку, которая DIR_CACHE (storage/cache/) и разрешить в нее запись для нужного пользователя.

Вся остальная пачка проблем в том, что по определению проверяется не наличие открываемого файла, а лишь указание его имени. Имя приехало, файла на месте нет. Учитывая, что это кэш, он должен автоматом создаваться и обновляться. Так что, первым делом копайте в сторону прав на директорию, а если не поможет - нужно искать кто и где должен был создать этот файл ранее и уже там смотреть, почему не создался.

maximka77
На сайте с 15.10.2011
Offline
227
#2

Алеандр , права на папку /system/library/cache/file.php стоят - 755, на сам файл file.php - 655.

Это правильно?

Андрей Воробьев
На сайте с 12.11.2018
Offline
22
#3

В коде явно напрашивается в `if` добавить проверку на наличие файла,

что-то типа `if ($files and array_key_exists(0, $files) and file_exists($files[0])) {`

+ проверить результат `fopen` на `false`.

Проверьте, может в новой версии cms/расширения это уже реализовано,

если нет, то напишите разработчикам и скиньте им этот лог с предупреждениями.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#4

Кэш очистили руками когда шёл запрос к сайту вот и всё. Ничего страшного нет, нормальная работа.


В коде явно напрашивается в `if` добавить проверку на наличие файла,

А glob по вашему что делает? Из воздуха этот файл берёт? Это вам не самописная CMS.


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

Если Opencart/ocStore не видели в глаза, зачем эту ахинею писать? Если файл не создался, то и запрашивать будет нечего, так работает там система.
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Андрей Воробьев
На сайте с 12.11.2018
Offline
22
#5
О, вот узнаю типичное хамское поведение на рунетовском форуме.

> Ничего страшного нет

Согласен

> нормальная работа

Нет, предупреждения по возможности надо исправлять, но это не критично, да.

> А glob по вашему что делает? Из воздуха этот файл берёт?

Во время работы glob файл есть, когда работает fopen файла уже нет.
Такую ситуацию file_exists перед fopen отловит, если нет - то проверка результата fopen на false.


LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#6
Андрей Воробьев #:
О, вот узнаю типичное хамское поведение на рунетовском форуме.

> Ничего страшного нет

Согласен

> нормальная работа

Нет, предупреждения по возможности надо исправлять, но это не критично, да.

> А glob по вашему что делает? Из воздуха этот файл берёт?

Во время работы glob файл есть, когда работает fopen файла уже нет.
Такую ситуацию file_exists перед fopen отловит, если нет - то проверка результата fopen на false.


А вот типичное проявление глупость в рунете, лезьте с советами туда, в чём ничего не понимаешь. Классика!

А если и после fopen он исчезнет как быть? На каждую строчку писать условия проверки?

Такое поведение не стандартное для движка и вызвано "третьей стороной". Поэтому делать ничего не нужно.

Хотя можно сделать, рекомендую перевести на memcache или redis кэш, в разы бодрее будет работать движок.

maximka77
На сайте с 15.10.2011
Offline
227
#7
Спасибо большое всем за помощь!
Андрей Воробьев
На сайте с 12.11.2018
Offline
22
#8

> А если и после fopen он исчезнет как быть? На каждую строчку писать условия проверки?

Да.

С таким подходом можно и тесты не писать - а зачем?

> Такое поведение не стандартное для движка и вызвано "третьей стороной". Поэтому делать ничего не нужно.

Но это же происходит не один раз, а периодически, с этим надо что-то делать - перенести кэш в мемкеш норм вариант.

Если на такое забивать, то когда-нибудь в потоке такого мусорного шума будет пропущено важное.

Анабой Янсур
На сайте с 12.04.2011
Offline
114
#9
Андрей Воробьев #:

> А если и после fopen он исчезнет как быть? На каждую строчку писать условия проверки?

Да.

С таким подходом можно и тесты не писать - а зачем?

> Такое поведение не стандартное для движка и вызвано "третьей стороной". Поэтому делать ничего не нужно.

Но это же происходит не один раз, а периодически, с этим надо что-то делать - перенести кэш в мемкеш норм вариант.

Если на такое забивать, то когда-нибудь в потоке такого мусорного шума будет пропущено важное.

Проблема инвалидации кеша идет именно в ситуации "стая собак". Это когда один процесс инициирует инвалидацию кеша, а второй еще успевает получить ответ что файл кеша есть. Но на момент доступа файла фиически уже и еще нет.
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#10
Андрей Воробьев #:

> А если и после fopen он исчезнет как быть? На каждую строчку писать условия проверки?

Да.


Мде... сразу видно человека, который вообще никогда не работал с высоконагруженными проектами. Даже в голову не приходит вам, что каждая проверка = жор ресурса диска.

Благо вы не разработчик данной CMS.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий