Я получил эту ошибку в моем торговом магазине сразу после удаления расширения. Полный магазин больше не работает. У него нет моего собственного шаблона, и все функции 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 говорит, что это должна быть распространенная ошибка, но я не могу найти решение.
ответ прост, изменение →
define('DIR_STORAGE','/storage/');
define('DIR_STORAGE', DIR_SYSTEM . '/storage/');
и сделайте это в config.php и config.php внутри папки администратора, измените обе папки
эта проблема возникает, когда система не может создать папку хранения, в которой хранятся папки кэшей и изменений журналов из-за проблем с разрешениями, иногда проблема возникает после переноса каталога хранения с панели управления, поэтому для решения проблемы вам необходимо выполнить следующие действия:
sudo mkdir storage
sudo chmod -R 777 storage
sudo mkdir logs
sudo chmod -R 777 logs
sudo mkdir modification
sudo chmod -R 777 modification
Мы столкнулись с одной и той же проблемой и смогли ее решить, разместив правильные данные в этих двух файлах:
Убедитесь, что вы установили правильную запись для DB_PREFIX
:
define('DB_PREFIX', 'oc_');
$ 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
$filename
для $filename
журнала либо не задано в панели администратора, либо не передается конструктору. Зайдите в Admin > System > Settings > Server > Error Log Filename
и убедитесь, что у вас есть что-то там.
Если это так, следующим шагом будет проверка основного index.php и убедитесь, что код не поврежден по строке 68, которая должна быть:
$log = new Log($config->get('config_error_filename'));
$registry->set('log', $log);
Я столкнулся с такой же проблемой. Сразу после установки в админе:
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. После этого я оставил все ошибки.