1

卸载扩展程序后,我立即在我的 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 中遇到过这个错误吗?谷歌说,这一定是一个常见的错误,但我找不到解决方案。

4

9 回答 9

3

答案很简单,改变---->

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

并对 config.php 和 admin 文件夹中的 config.php 执行此操作,更改两个文件夹

于 2018-03-25T14:57:48.463 回答
3

出现此问题当系统因为权限问题无法创建包含日志缓存和修改文件夹的存储文件夹时,有时会在从仪表板传输存储目录后出现问题,因此要解决此问题,您需要执行以下操作

  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
于 2017-10-22T12:08:29.053 回答
0

日志文件的$filename要么未在您的管理面板中设置,要么未传递给构造函数。检查Admin > System > Settings > Server > Error Log Filename并确保您在那里设置了一些东西。

如果是这样,下一步是检查主 index.php 并确保代码在第 68 行附近是完整的,应该是:

$log = new Log($config->get('config_error_filename'));
$registry->set('log', $log);
于 2015-03-28T20:26:05.150 回答
0

我们遇到了同样的问题,并且能够通过将正确的数据放入这两个文件中来解决它:

  1. 配置文件
  2. 管理员/config.php

请确保您输入了正确的条目DB_PREFIX

define('DB_PREFIX', 'oc_');
于 2017-02-22T10:45:57.763 回答
0

$filename is empty , Find the filename because it not exist.

<?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);
    }
}

check if $filename is not empty

于 2016-08-26T04:27:04.633 回答
0

这是此处的本地项目根目录,但您可以轻松更改服务器路径。

注意:您可以将 config.php 和 config.php 更改为 admin 文件夹中的两个 File Compulsory。

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

OR

define('DIR_STORAGE', 'D:/xampp/htdocs/opencart_project/storage/');
于 2019-10-11T06:33:20.320 回答
-1

正在寻找存储文件夹中的文件。一步一步做这个

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 站点

快!

于 2019-03-18T21:41:09.890 回答
-1
chcon -R -t httpd_sys_rw_content_t /var/www/...

尝试这个。我已经使用命令解决了这个错误。

于 2018-10-14T11:02:10.920 回答
-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。之后,我留下了所有的错误。

于 2015-05-14T01:05:49.137 回答