在ECShop的首页出现报错,通常与代码兼容性、配置错误或PHP版本问题有关,以下是一些常见报错及其解决方案:
报错信息 | 解决方案 |
Only variables should be passed by reference | 在includes\cls_template.php 文件的第406行,将以下代码:$tag_sel = array_shift(explode(' ', $tag)); 修改为: `` php ``。 |
Nonstatic method cls_image::gd_version() should not be called statically | 在includes\lib_main.php 文件的第1316行,将以下代码://$ext = end(explode('.', $tmp)); 修改为: `` php ``。 |
Redefining already defined constructor for class | 找到对应代码,将两个构造函数的位置对调一下即可。 |
相关问答FAQs
1、问:为什么在PHP 5.3以上版本中会报“Only variables should be passed by reference”的错误?
答:在PHP 5.3及更高版本中,array_shift函数的参数必须是引用传递的变量,而不能是函数返回值,原来的代码$tag_sel = array_shift(explode(' ', $tag));
中,explode(' ', $tag)
是一个函数返回值,不能直接传递给array_shift,需要将其拆分为两步:先创建数组变量,然后再传递给array_shift函数,如:
```php
$tag_arr = explode(' ', $tag);
$tag_sel = array_shift($tag_arr);
```
2、问:如何解决“Nonstatic method cls_image::gd_version() should not be called statically”的错误?
答:这个错误通常是由于调用了非静态方法作为静态方法导致的,可以通过以下步骤解决:
找到includes\lib_base.php
文件中的相应代码,将return cls_image::gd_version();
注释掉。
如果程序确实需要GD库支持,可以咨询服务器空间商,确保GD库已安装并正确配置。
另一种解决方法是将cls_image::gd_version()
方法声明为静态方法,即在includes\cls_image.php
文件中找到function gd_version()
并将其改为static function gd_version()
。