【问题标题】:DBase in CakePHP?CakePHP 中的 DBase?
【发布时间】:2017-05-07 17:41:06
【问题描述】:

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

调用未定义函数 App\Controller\dbase_open()

我已经在 /etc/php5/apache2/php.ini 和 /etc/php5/cli/php.ini 中包含了扩展

【问题讨论】:

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

标签: php cakephp php-extension pecl dbase


【解决方案1】:

以下是解决问题的调试步骤:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2023-03-15
    • 2012-12-06
    • 1970-01-01
    • 2011-10-29
    • 2013-06-03
    相关资源
    最近更新 更多