致命错误:PHP版本升级后找不到类“类别”

时间:2012-06-06 09:12:36

标签: codeigniter phpactiverecord

我使用CodeIgniter 2.1,我的生产服务器更新为PHP 5.4.3-1,使用phpactiverecord的页面不显示任何内容,也不显示任何错误。

在我的测试服务器5.3.6工作正常。

我使用2012年5月的每晚版本。我尝试使用旧版本和稳定版本。

Php-activerecord与php 5.4.3无法正常工作?


编辑:我发现我的新服务器没有displays_errors = ON。激活后,我看到错误:

Fatal error: Class 'Category' not found in /srv/www/framework/application/controllers/categories.php on line 26

第26行:

$data["categories"] = Category::findby($parent_id);

categories.php存在于/srv/www/framework/application/controllers/中,这在PHP 5.3.6上运行良好。

我需要多打电话或以不同的方式打电话?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

此解决方案适用于通过最新的SPARKS版本进行php-activerecord。

调试autoload_function,我看到模型文件加载了大写的第一个字母,仅在PHP 5.4.3中,而不是在5.3.x中,并且文件没有加载。

找到ActiveRecord.php
yourfolder/sparks/php-activerecord/0.0.0.2/vendor/php-activerecord

搜索功能:

activerecord_autoload($class_name)

第49行改变:

    $file = $root.DS.$file_name;

    $file = $root.DS.strtolower($file_name);

现在它有效!

Pd积。在解决这个问题之前,我发现了PHP 5.4.3的另一个奇怪的例子。如果数据库密码在字符串上有'/',则函数parse_url()返回false。因此,php-activerecord无法连接到文件yourfolder / sparks / php-activerecord / 0.0.0.2 / vendor / php-activerecord / lib / connection.php中的数据库:function parse_connection_url()。

在PHP 5.3上返回正确的数组。