Всем привет!
Появилась такая ошибка:
2023-04-26 4:08:00 - PHP Warning: unlink(/home/d/............/cache/cache.catalog.language.1682485678): No such file or directory in /home/d/........../public_html/system/library/cache/file.php on line 68
Как её исправить?
PHP Warning: unlink
- spectrum
- Разработчик дополнений
- Сообщения: 71
- Зарегистрирован: 10.03.2022
- Мои дополнения: Spectrum
- Поблагодарил: 43 раз
- Спасибо: 32 раз
Re: PHP Warning: unlink
Warning - это предупреждение. Конкретно приведённое вами означает, что штатный файловый кеш опенкарт не нашел ранее созданный файл. Файл может быть удален по разным причинам, в том числе и вами ручной чисткой или с помощью каких-либо модулей. На работу опенкарт это не повлияет.
- AlexDW
- Разработчик дополнений
- Сообщения: 194
- Зарегистрирован: 13.03.2022
- Откуда: Екатеринбург
- Мои дополнения: alexdw
- Поблагодарил: 44 раз
- Спасибо: 72 раз
Re: PHP Warning: unlink
обычно такое происходит при излишнем кешировании со стороны файловой системы
когда файл еще числится в кеше, а физически его уже нет
в файле system\library\cache\file.php
замените все
unlink($file);
на
if (!@unlink($file)) {
clearstatcache(true, $file);
}
и обновите кеш модификаторов для верности
- BuslikDrev
- Разработчик дополнений
- Сообщения: 134
- Зарегистрирован: 22.04.2022
- Откуда: Кіеўская Русь
- Поблагодарил: 4 раз
- Спасибо: 9 раз
- Контактная информация:
Re: PHP Warning: unlink
if (\is_file($file) && !@unlink($file)) {
clearstatcache(false, $file);
}
И вообще убрать чистку всего кэша каждым пользователем, а просто сообщать, что кэш старый и не давать. А при создании нового удалит старый.
public function get($key) {
$files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');
if ($files && \is_file($files[0]) && substr(strrchr($files[0], '.'), 1) > time()) {
clearstatcache(true, $files[0]);
$size = filesize($files[0]);
if ($size > 0) {
$handle = fopen($files[0], 'r');
if ($handle != false) {
flock($handle, LOCK_SH);
$data = fread($handle, $size);
flock($handle, LOCK_UN);
fclose($handle);
return json_decode($data, true);
}
}
}
return false;
}