0

我使用 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 上运行良好。

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

4

1 回答 1

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 中的数据库:文件 parse_connection_url()。

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

于 2012-06-07T18:59:22.370 回答