Nginx 必须手动加载PHP ActiveRecord模型

Nginx 必须手动加载PHP ActiveRecord模型,nginx,php,phpactiverecord,Nginx,Php,Phpactiverecord,我画的是空白。我有本地工作的代码(即MAMP)。当移动到nginx ubuntu盒(运行php fpm)时,由于某种原因,phpactiverecord出现了问题 我终于找到了答案——我所有的模型类都必须手动加载。如果我在代码下面添加require_once(),那么它可以正常工作。如果没有,则会出现如下错误: PHP致命错误:找不到类。。。在我创建的模型上 有人知道我可以朝哪个方向解决这个问题吗?我检查了models文件夹的权限(它不在公共根目录中),回显了发送到cfg->set\u mode

我画的是空白。我有本地工作的代码(即MAMP)。当移动到nginx ubuntu盒(运行php fpm)时,由于某种原因,phpactiverecord出现了问题

我终于找到了答案——我所有的模型类都必须手动加载。如果我在代码下面添加require_once(),那么它可以正常工作。如果没有,则会出现如下错误:

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

有人知道我可以朝哪个方向解决这个问题吗?我检查了models文件夹的权限(它不在公共根目录中),回显了发送到cfg->set\u model\u目录的路径是否正确,等等

这听起来像是nginx或php的东西?我猜是nginx,因为这对我妈妈有效

不起作用:

ActiveRecord\Config::initialize( function ($cfg) { $cfg->set_model_directory(BASE_PATH . '/models'); $cfg->set_connections( array( 'development' => 'mysql://blah:removed@localhost/com_dbname' ) ); } ); ActiveRecord\Config::初始化( 功能($cfg){ $cfg->set_model_目录(基本路径'/models'); $cfg->set_连接( 排列( “开发”=>“mysql://blah:removed@localhost/com_dbname' ) ); } ); 作品:

ActiveRecord\Config::initialize( function ($cfg) { $cfg->set_model_directory(BASE_PATH . '/models'); $cfg->set_connections( array( 'development' => 'mysql://blah:removed@localhost/com_dbname' ) ); } ); require_once(BASE_PATH . '/models/model1.php'); require_once(BASE_PATH . '/models/model2.php'); ActiveRecord\Config::初始化( 功能($cfg){ $cfg->set_model_目录(基本路径'/models'); $cfg->set_连接( 排列( “开发”=>“mysql://blah:removed@localhost/com_dbname' ) ); } ); 需要一次(基本路径'/models/model1.php'); 需要一次(基本路径'/models/model2.php'); 更新

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

require_once ('../lib/php-activerecord/ActiveRecord.php'); ActiveRecord\Config::initialize( function ($cfg) { $cfg->set_model_directory('/var/www/uc1/models'); $cfg->set_connections( array( 'development' => 'mysql://test_usr:test_pwd@localhost/test_db' ) ); } ); require_once ('/var/www/uc1/models/ucurls.php'); //Name of model file. Must manually include to get this to work on my nginx server. $_record = UCUrls::find_by_urlkey('example.com/123'); echo "urlkey=" . $_record->urlkey; 需要_once('../lib/php-activerecord/activerecord.php'); ActiveRecord\Config::初始化( 功能($cfg){ $cfg->set_model_目录('/var/www/uc1/models'); $cfg->set_连接( 排列( “开发”=>“mysql://test_usr:test_pwd@本地主机/测试数据库' ) ); } ); 只需要一次('/var/www/uc1/models/ucurls.php')//模型文件的名称。必须手动包含才能在我的nginx服务器上运行。 $\u record=UCUrls::按urlkey查找(example.com/123); echo“urlkey=”$_记录->URL键;
在ActiveRecord.php中也设置跟踪查看ActiveRecord正在搜索模型的位置。 但我认为你的问题在于文件系统——MacOSX默认使用不区分大小写的文件系统,而Ubuntu的区分大小写的文件系统


因此,您的模型UCURL应该在/var/www/uc1/models/UCUrls.php文件中,而不是在/var/www/uc1/models/UCUrls.php中。我在windows中解决了这个问题,在文件中添加了一行

在函数
activerecord\u autoload($class\u name)
在第39或40行

   $file = "$root/$class_name.php";
    //add this line
   $file = strtolower($file);

模型是否在符号链接目录中?可能是惯例问题,模型的名称是什么?@sroes-不是符号链接目录。Koen-将使用实际代码名进行更新。