Opencart fopen(/upload/system/logs/): не удалось открыть поток: это каталог

Я получил эту ошибку в своем магазине opencart сразу после удаления расширения. Полный магазин больше не работает. В нем нет собственного шаблона и не работают все функции php. Эта ошибка появляется:

Warning: fopen(/my_path/system/logs/): failed to open stream: Is a directory in /my_path/system/library/log.php on line 6

Это класс журнала:

class Log {
    private $handle;

    public function __construct($filename) {
        //this is line 6
        $this->handle = fopen(DIR_LOGS . $filename, 'a');
    }

    public function write($message) {
        fwrite($this->handle, date('Y-m-d G:i:s') . ' - ' . print_r($message, true) . "\n");
    }

    public function __destruct() {
        fclose($this->handle);
    }
}

Похоже, переменная $filename пуста. Это также отражает неработающий php, о котором я упоминал выше. Каталог журналов - 755, и я пробовал его с 777.

И вторая ошибка отображается внизу моего магазина:

Fatal error: Call to a member function get() on a non-object in /homepages/6/d421894284/htdocs/opencart/upload/index.php on line 104

Кто-нибудь сталкивался с этой ошибкой в ​​Opencart 2.0.1.1? Google говорит, что это должно быть распространенная ошибка, но я не могу найти решение.


person m1crdy    schedule 27.03.2015    source источник
comment
вы должны указать полный путь из корневого каталога   -  person kishan    schedule 27.03.2015
comment
DIR_LOGS определен в config.php. Это: /homepages/6/d421894284/htdocs/opencart/upload/system/logs/. Я просто заменил его в своем вопросе. И это должен быть правильный путь. я ничего не менял   -  person m1crdy    schedule 27.03.2015


Ответы (9)


ответ прост , меняй ---->

define('DIR_STORAGE','/storage/');
define('DIR_STORAGE', DIR_SYSTEM . '/storage/');

и сделайте это с config.php и config.php внутри папки администратора, измените обе папки

person George Kokorikos    schedule 25.03.2018
comment
Решил мою проблему. Спасибо. - person Laxmikant Bhumkar; 08.10.2019

эта проблема возникает, когда система не может создать папку хранилища, которая содержит кеш журналов и папки модификации из-за проблем с разрешениями, иногда проблема возникает после переноса каталога хранилища с панели управления, поэтому для решения проблемы вам необходимо сделать следующее

  1. создать папку хранения в корне приложения sudo mkdir storage
  2. установите для новой папки права доступа 777, 775 или 755 sudo chmod -R 755 storage
  3. создать папку хранения в корне приложения sudo mkdir logs
  4. установите для новой папки права доступа 777, 775 или 755 sudo chmod -R 755 logs
  5. создать папку хранения в корне приложения sudo mkdir modification
  6. установите для новой папки права доступа 777, 775 или 755 sudo chmod -R 755 modification
person Abdallah Awwad Alkhwaldah    schedule 22.10.2017
comment
журналы и папки модификаций внутри папки хранилища, а не root. Дерево должно быть \storage, \storage\cache, \storage\logs, \storage\modification, \storage\session - person 0x000f; 22.11.2018
comment
Нет, НЕ делайте этого, вы никогда не должны устанавливать для папок значение 777, а также быть небезопасным, многие веб-хосты фактически заблокируют что-либо, если вы это сделаете. Папки должны быть 755, а файлы должны быть 644. - person Paul Feakins; 19.03.2019

$filename для файла журнала либо не задано в вашей панели администратора, либо не передается конструктору. Зайдите в Admin > System > Settings > Server > Error Log Filename и убедитесь, что там что-то установлено.

Если это так, следующим шагом будет проверка основного index.php и убедитесь, что код не поврежден в строке 68, которая должна быть:

$log = new Log($config->get('config_error_filename'));
$registry->set('log', $log);
person billynoah    schedule 28.03.2015

$filename пусто, Найдите имя файла, потому что оно не существует.

<?php
class Log {
    private $handle;

    public function __construct($filename) {
        if (! empty( $filename )) {
          $this->handle = fopen(DIR_LOGS . $filename, 'a');
        }
    }

    public function write($message) {
        fwrite($this->handle, date('Y-m-d G:i:s') . ' - ' . print_r($message, true) . "\n");
    }

    public function __destruct() {
        fclose($this->handle);
    }
}

проверить, не пусто ли $filename

person ScyllaDarwin    schedule 26.08.2016

Мы столкнулись с той же проблемой и смогли решить ее, поместив правильные данные в эти два файла:

  1. config.php
  2. админ/config.php

Пожалуйста, убедитесь, что вы ввели правильную запись для DB_PREFIX:

define('DB_PREFIX', 'oc_');
person Subhash Jain    schedule 22.02.2017
comment
Привет, Дитер Мемкен. Вам нужно убедиться, что вы поставили правильный префикс перед именем данных. Мы получили ту же ошибку: Предупреждение: fopen(/my_path/system/logs/): не удалось открыть поток: это каталог в /my_path/system/library/log.php в строке 6 — из-за этой неправильной записи. Ставим правильную запись и ошибки больше не было. - person Subhash Jain; 23.02.2017

Здесь это локальный корень проекта, но вы можете легко изменить свой путь к серверу.

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

define('DIR_STORAGE', 'D:/xampp/htdocs/opencart_project/system/storage/');

OR

define('DIR_STORAGE', 'D:/xampp/htdocs/opencart_project/storage/');
person Mujahid Bhoraniya    schedule 11.10.2019

chcon -R -t httpd_sys_rw_content_t /var/www/...

попробуй это. Я решил эту ошибку с помощью команды.

person Kim Duc    schedule 14.10.2018

Ищет файлы в папке вашего хранилища. Делайте это шаг за шагом

cd /var/www/opencart_storage/
mkdir logs
chmod 777 logs
cd logs
vim error.log 
chmod 777 error.log
vim googleshopping.0.log  
chmod 777 googleshopping.0.log
vim ocmod.log  
chmod 777 ocmod.log
vim openbay.log
chmod 777 openbay.log

перезагрузите ваш сайт opencart

Престо!

person Ray    schedule 18.03.2019
comment
Опять же, НЕ делайте этого. Папки и файлы не должны быть 777, а также быть небезопасными, многие веб-хосты после этого заблокируют их. Папки должны быть 755, файлы должны быть 644. - person Paul Feakins; 19.03.2019

Я столкнулся с той же проблемой. Сразу после установки в админке появилось:

Warning: fopen (/ my_path / system / logs /): failed to open stream: Is a directory in /my_path/system/library/log.php on line 6

Вот решение: Права на папку с логами после установки можно оставить 755! Файл находится по адресу /var/www/my_account/data/www/mysite.com/system/logs/openbay.log нужно поставить разрешение 777. После этого я оставил все ошибки.

person Владимир Чикуров    schedule 14.05.2015
comment
Разрешение 777 в этой же папке нужно поставить на файлы ocmod.log и error.log - person Владимир Чикуров; 14.05.2015
comment
Папки должны быть 755, файлы должны быть 644. 777 небезопасно и может быть заблокировано вашим веб-хостом. - person Paul Feakins; 19.03.2019