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

0

Я получил эту ошибку в моем торговом магазине сразу после удаления расширения. Полный магазин больше не работает. У него нет моего собственного шаблона, и все функции 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 var пуст. Это также отражает неработающий php i, упомянутый выше. Каталог журналов - 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 говорит, что это должна быть распространенная ошибка, но я не могу найти решение.

  • 0
    Вы должны включить полный путь из корневого каталога
  • 0
    DIR_LOGS определяется в config.php. Это: / homepages / 6 / d421894284 / htdocs / opencart / upload / system / logs /. Я просто заменил его в своем вопросе. И это должен быть правильный путь. Я ничего не изменил
Теги:
opencart
opencart2.x

6 ответов

1

ответ прост, изменение →

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

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

1

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

  1. создать папку хранения в корневом каталоге приложения sudo mkdir storage
  2. установить новую папку на 777 или 775 разрешений sudo chmod -R 777 storage
  3. создайте папку хранения в корневом каталоге приложений sudo mkdir logs
  4. установить новую папку на 777 или 775 разрешений sudo chmod -R 777 logs
  5. создать папку хранения в корневом приложении sudo mkdir modification
  6. установить новую папку на 777 или 775 разрешений sudo chmod -R 777 modification
  • 0
    логи и папки изменений внутри папки хранения не root. Дерево должно быть \ storage, \ storage \ cache, \ storage \ logs, \ storage \ модификация, \ storage \ session
  • 1
    Нет, НЕ делайте этого, вы никогда не должны устанавливать папки на 777, так как, будучи небезопасными, многие веб-хосты на самом деле будут блокировать вещи, если вы это сделаете. Папки должны быть 755, а файлы должны быть 644.
0

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

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

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

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

$ 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

0

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

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

$log = new Log($config->get('config_error_filename'));
$registry->set('log', $log);
-2

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

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. После этого я оставил все ошибки.

  • 0
    Разрешение 777 в одной папке необходимо поставить на файлы ocmod.log и error.log
  • 0
    Папки должны быть 755, файлы должны быть 644. 777 небезопасен и может быть заблокирован вашим веб-хостингом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню