Opencart fopen(/ upload / system / logs /):无法打开流:是一个目录

问题描述 投票:0回答:8

卸载扩展后,我在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

这是Log类:

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。日志目录是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中遇到过这个错误?谷歌说,这一定是一个常见的错误,但我找不到解决方案。

php opencart opencart2.x
8个回答
1
投票

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

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

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


1
投票

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

  1. 在应用程序sudo mkdir storage的根目录中创建一个存储文件夹
  2. 将新文件夹设置为777或775和755权限qazxsw poi
  3. 在应用程序sudo chmod -R 755 storage的根目录中创建一个存储文件夹
  4. 将新文件夹设置为777或775和755权限qazxsw poi
  5. 在应用程序sudo mkdir logs的根目录中创建一个存储文件夹
  6. 将新文件夹设置为777或775和755权限qazxsw poi

0
投票

日志文件的sudo chmod -R 755 logs未在管理面板中设置或未传递给构造函数。入住sudo mkdir modification并确保您在那里设置了一些东西。

如果是这样,下一步将检查主index.php并确保代码在第68行周围完好无损,应该是:

sudo chmod -R 755 modification

0
投票

$ filename为空,查找文件名,因为它不存在。

$filename

检查$ filename是否为空


0
投票

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

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

请确保您为Admin > System > Settings > Server > Error Log Filename输入了正确的条目:

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

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

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


-1
投票

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

DB_PREFIX

重新加载您的opencart网站

普雷斯托!


-2
投票

我遇到了同样的问题。安装后立即出现在管理员中:

define('DB_PREFIX', 'oc_');

这是解决方案:安装后日志文件夹的权限,你可以离开755!该文件位于/var/www/my_account/data/www/mysite.com/system/logs/openbay.log需要放置权限777.之后,我遗漏了所有错误。

© www.soinside.com 2019 - 2024. All rights reserved.