1

我在画一个空白。我有在本地工作的代码(即 MAMP)。当移动到 nginx ubuntu 机器(运行 php-fpm)时,由于某种原因,phpactiverecord 正在运行。

我终于把它追溯到这个 - 我所有的模型类,我必须手动加载。如果我在我的代码下面添加一个 require_once() ,那么它工作正常。如果我不这样做,那么我会收到如下错误:

PHP 致命错误:在我创建的模型上找不到类...

有谁知道我可以在哪个方向解决这个问题?我检查了对模型文件夹(不在公共根目录中)的权限,回显了发送到 cfg->set_model_directory 的路径是否正确,等等。

这听起来像一个 nginx 或 php 的东西?我猜是 nginx,因为这适用于我的 MAMP?

不起作用:

ActiveRecord\Config::初始化(
    功能($cfg){
        $cfg->set_model_directory(BASE_PATH . '/models');
        $cfg->set_connections(
            大批(
                '发展' => 'mysql://blah:removed@localhost/com_dbname'
            )
        );
    }
);

作品:

ActiveRecord\Config::初始化(
    功能($cfg){
        $cfg->set_model_directory(BASE_PATH . '/models');
        $cfg->set_connections(
            大批(
                '发展' => 'mysql://blah:removed@localhost/com_dbname'
            )
        );
    }
);

require_once(BASE_PATH . '/models/model1.php');
require_once(BASE_PATH . '/models/model2.php');

更新

添加实际代码以帮助识别问题:

require_once ('../lib/php-activerecord/ActiveRecord.php');

ActiveRecord\Config::初始化(
    功能($cfg){
        $cfg->set_model_directory('/var/www/uc1/models');
        $cfg->set_connections(
            大批(
                '发展' => 'mysql://test_usr:test_pwd@localhost/test_db'
            )
        );
    }
);
require_once ('/var/www/uc1/models/ucurls.php'); //模型文件的名称。必须手动包含才能使其在我的 nginx 服务器上工作。
$_record = UCUrls::find_by_urlkey('example.com/123');
回声“urlkey=”。$_record->urlkey;
4

2 回答 2

2

我在 Windows 中解决了这个问题,在文件ActiveRecord.php中添加了一行,

activerecord_autoload($class_name) 在第39 或 40 行的函数中

   $file = "$root/$class_name.php";
    //add this line
   $file = strtolower($file);
于 2014-06-09T20:22:09.123 回答
0

在 ActiveRecord.php 中设置跟踪也可以查看 ActiveRecord 在哪里搜索模型。但是我认为您的问题出在文件系统中-Mac OS X 默认使用不区分大小写的文件系统,而 Ubuntu 的区分大小写的文件系统。

所以你的模型 UCUrls 应该在文件 /var/www/uc1/models/UCUrls.php 中,而不是 /var/www/uc1/models/ucurls.php

于 2013-10-07T20:49:33.287 回答