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


Opencart fopen(/upload/system/logs/): failed to open stream: Is a directory

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

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

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

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

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

  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

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

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

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

$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是否为空

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

  1. config.php
  2. admin/config.php

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

define('DB_PREFIX', 'oc_');

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

注意:您可以在admin文件夹中更改为config.php和config.php,这两个文件夹都是File强制文件

define('DIR_STORAGE', 'D:/xampp/htdocs/opencart_project/system/storage/');
OR
define('DIR_STORAGE', 'D:/xampp/htdocs/opencart_project/storage/');
chcon -R -t httpd_sys_rw_content_t /var/www/...

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

正在查找存储文件夹中的文件。一步一步

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

重新加载您的露天艺术网站

普雷斯托!

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

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。在那之后,我留下了所有的错误。