2015-07-01 85 views
0

我正在使用opencart 2.0.2.0。我只是检查一些随机技巧,我写的网址index.php?route=common/homeindex.php?route=common/home%00。它给我看错了Warning: is_dir() expects parameter 1 to be a valid path, string given in \system\engine\action.php on line 18不明白为什么会发生这种情况。任何人都可以请帮助我知道为什么会出现这个错误,我该如何解决?Opencart在更改url时显示错误

回答

1

经过一番研究,我发现,它实际上是在PHP中的错误(报道here @ 2015年2月4日和已经固定)

什么是你的问题呢?
空字节(%00)导致PHP字符串截断(这是正常的,我认为是因为PHP的字符串是通过C字符串实现)

因此正在发生的事情OC?

  • 打开文件<OC_ROOT>\system\engine\action.php,类Action驻留那里,它是负责解析路径参数,确定适当的控制器被加载(你有错误的)+调用该函数在控制器和保持方法参数,以便被执行
  • 在以后通过在该行
    $file = DIR_APPLICATION . 'controller/' . str_replace(array('../', '..\', '..'), '', $path) . '.php';
    你会发现,所述控制器文件通过附加加载.php到通过解析路由参数,因为已增加了一个构造的$path可变额外的空字节到路由,$file看起来是这样的:bla bla bla/common/home\0.php,在\0导致剥离,这导致一个不存在的文件路径.php,这就是为什么OC加载错误页

如何解决呢
只需从关闭警告你项目,如果你的意思是“我该如何解决它?”让它工作,然后在解析它之前(在同一个文件中)去掉路由参数中的空字节,但我不建议你这样做,因为它是一个被处理的破解,你将会解除它:D

0

这只是这个opencart版本的警告。为了快速解决,您将添加“error_reporting(0);”在__construct函数中。

谢谢。