CakePHP中的数据库?

CakePHP中的数据库?,php,cakephp,php-extension,pecl,dbase,Php,Cakephp,Php Extension,Pecl,Dbase,如何在CakePHP(v3.1)中使用DBase?我已经用PECL(v5.1.1)安装了它,它可以在普通php中正常工作,但是当我在CakePHP中运行dbase_create()时,它会给我一个错误: 调用未定义的函数App\Controller\dbase\u open() 我已将扩展包含在/etc/php5/apache2/php.ini和/etc/php5/cli/php.ini中,下面是修复该问题所采取的调试步骤: 错误消息表示函数App\Controller\dbase\u crea

如何在CakePHP(v3.1)中使用DBase?我已经用PECL(v5.1.1)安装了它,它可以在普通php中正常工作,但是当我在CakePHP中运行dbase_create()时,它会给我一个错误:

调用未定义的函数App\Controller\dbase\u open()


我已将扩展包含在/etc/php5/apache2/php.ini和/etc/php5/cli/php.ini中,下面是修复该问题所采取的调试步骤:

  • 错误消息表示函数
    App\Controller\dbase\u create()
    不存在。我们所期望的是函数
    dbase_create()
    ,因此错误消息表明PHP正在查找错误的命名空间。将函数调用更改为
    \dbase_create()
    会导致PHP查找全局命名空间

  • PHP仍然给出了一条错误消息,这次说函数
    dbase\u create()
    不存在。这至少表明PHP现在正在寻找正确的位置,但该函数也不存在于全局命名空间中

  • php.ini文件已修改,但Apache在启动时会加载其模块的所有配置文件。为确保加载更改,当
    php.ini
    文件更改时,需要重新启动Apache。重新启动Apache以加载文件的新版本

  • 重新启动Apache后,该函数仍然不存在。让我们确保模块已正确加载。调用
    phpinfo()。这给出了一个有趣的结果:一个单独的PHP文件,其中只有
    phpinfo()
    表示加载了DBase 5.1.1,但是从CakePHP应用程序调用
    phpinfo()
    并没有输出任何与DBase相关的内容

  • CakePHP作为自己的服务器运行。与Apache一样,服务器启动时会加载
    php.ini
    文件,因此请确保在文件更改时重新启动该服务器。这解决了问题,重新启动CakePHP服务器后,
    dbase\u create()
    函数可用


  • 您的控制器是否使用自定义命名空间?如果是这样,您可能需要调用
    \dbase\u open()
    来告诉PHP从全局名称空间使用该函数。不,我没有为dbase使用任何名称空间。不,我是指您的控制器。根据错误消息,您位于
    名称空间App\Controller中。对不起。是的,cake会自动使用这个名称空间,但是当我用\dbase\u open()调用它时,我还得到了对未定义函数dbase\u create()的错误调用。还有其他想法吗?最后一个错误实际上是正确的。这意味着PHP正在正确的位置寻找函数。更新php.ini文件后是否重新启动了Apache?