Как я могу использовать DBase в CakePHP (v3.1)? Я уже установил его с PECL (v5.1.1), и он отлично работает с простым php, но когда я запускаю dbase_create () в CakePHP, он выдает мне ошибку:
Вызов неопределенной функции App \ Controller \ dbase_open ()
Я включил расширение в /etc/php5/apache2/php.ini и /etc/php5/cli/php.ini
Вот шаги отладки, предпринятые для устранения проблемы:
Сообщение об ошибке говорит о функции App\Controller\dbase_create()
не существует. То, что мы ожидаем, это функция dbase_create()
, поэтому сообщение об ошибке указывает на то, что PHP ищет неправильное пространство имен. Изменение вызова функции на \dbase_create()
заставил PHP посмотреть в глобальном пространстве имен.
PHP по-прежнему выдавал сообщение об ошибке, на этот раз говоря о функции dbase_create()
не существует. Это, по крайней мере, указывает на то, что PHP теперь ищет правильное место, но функция также не существует в глобальном пространстве имен.
php.ini
файлы были изменены, но Apache загружает все файлы конфигурации для своих модулей при запуске. Для обеспечения загрузки изменений необходимо перезапустить Apache, когда php.ini
файл изменен. Перезапустите Apache, чтобы загрузить новую версию файла.
После перезапуска Apache функция все еще не существует. Давайте удостоверимся, что модуль загружен правильно. Позвоните phpinfo()
и проверьте его вывод на наличие всего, что связано с DBase. Это дало интересный результат: отдельный файл PHP с просто phpinfo()
указал, что DBase 5.1.1 загружен, но вызывает phpinfo()
из приложения CakePHP не выводилось ничего связанного с DBase.
CakePHP работал как собственный сервер. Как и Apache, php.ini
файл загружается при запуске этого сервера, поэтому обязательно перезапустите этот сервер, когда файл изменится. Это решило проблему, после перезапуска сервера CakePHP dbase_create()
функция была доступна.
Других решений пока нет …