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

时间:2015-03-27 07:31:22

标签: php opencart opencart2.x

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

9 个答案:

答案 0 :(得分:1)

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

  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

答案 1 :(得分:1)

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

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

然后执行config.php和admin文件夹中的config.php,更改两个文件夹

答案 2 :(得分:0)

日志文件的$filename未在管理面板中设置或未传递给构造函数。签入Admin > System > Settings > Server > Error Log Filename并确保在那里设置了一些内容。

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

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

答案 3 :(得分: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是否为空

答案 4 :(得分:0)

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

  1. 的config.php
  2. 管理员/ config.php中
  3. 请确保您为DB_PREFIX输入了正确的条目:

    define('DB_PREFIX', 'oc_');
    

答案 5 :(得分:0)

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

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

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

OR

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

答案 6 :(得分:-1)

chcon -R -t httpd_sys_rw_content_t /var/www/...

尝试一下。我已经使用命令解决了此错误。

答案 7 :(得分:-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网站

Presto!

答案 8 :(得分:-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.之后,我遗漏了所有错误。