我使用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上运行良好。
我需要多打电话或以不同的方式打电话?
答案 0 :(得分:0)
我找到了解决方案。
此解决方案适用于通过最新的SPARKS版本进行php-activerecord。
调试autoload_function,我看到模型文件加载了大写的第一个字母,仅在PHP 5.4.3中,而不是在5.3.x中,并且文件没有加载。
在
找到ActiveRecord.phpyourfolder/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上返回正确的数组。