ownCloud服务器:DBA_默认PHP错误

ownCloud服务器:DBA_默认PHP错误,php,database,mariadb,owncloud,synology,Php,Database,Mariadb,Owncloud,Synology,我在Synology NAS上运行自己的云实例时遇到问题。我发现以下日志错误: PHP启动:没有这样的处理程序:DBA_默认值为Unknown0 。。。这应该是关于与数据库的连接。 这是非常令人困惑的,因为数据库可以被自己的云调用,所有连接的客户端都可以工作,web界面可以工作等等。。。只剩下这条信息了 我的配置详细信息: DS216j与DSM 6.0.2-8451更新7 PHP 5.6.28 MariaDB 5.5.53 ownCloud 9.1.3 我完全找不到有关该错误的信息…我最近在我的

我在Synology NAS上运行自己的云实例时遇到问题。我发现以下日志错误:

PHP启动:没有这样的处理程序:DBA_默认值为Unknown0

。。。这应该是关于与数据库的连接。 这是非常令人困惑的,因为数据库可以被自己的云调用,所有连接的客户端都可以工作,web界面可以工作等等。。。只剩下这条信息了

我的配置详细信息:

DS216j与DSM 6.0.2-8451更新7 PHP 5.6.28 MariaDB 5.5.53 ownCloud 9.1.3
我完全找不到有关该错误的信息…

我最近在我的Synology NAS上看到了这条消息,这就是我发现的。我的NAS有多个Php安装,我认为这个错误来自默认安装

root@synology:~# /bin/php --ri dba
Extension 'dba' not present.
但是使用我的替代php

root@synology:~# /usr/local/bin/php56 --ri dba

dba

DBA support => enabled
Supported handlers => gdbm cdb cdb_make db4 inifile flatfile 

Directive => Local Value => Master Value
dba.default_handler => flatfile => flatfile
因此,一种解决方案是确保应用程序调用的是正确的Php版本。为此,您可以从Synology网站管理HTTP服务器和PHP版本

或者,我注意到这条消息只是E_警告级别,除非您需要Berkley数据库,否则可以忽略它。我将此代码添加到我的应用程序中

function shutdownHandler()
{
    try {
        $error = error_get_last();
        if ( $error !== NULL && $error["type"] == E_ERROR) {
            $backtrace = "(E_ERROR) " . $error["message"];

            $trace = debug_backtrace();
            foreach($trace as $item) {
                $backtrace .= "\n\t" . (isset($item['file']) ? $item['file'] : '<unknown file>')
                    . ' ' . (isset($item['line']) ? $item['line'] : '<unknown line>')
                    . ' calling ' . (isset($item['function']) ? $item['function'] : '<unknown function>') . '()';
            }

            \Logger::LogError( $backtrace, $error["file"], $error["line"]);
        }
    }
    catch (Exception $e) {
        print get_class($e)." thrown within the shutdown handler. Message: ".$e->getMessage()." on line ".$e->getLine();
    }
}

# Registering shutdown function
register_shutdown_function('shutdownHandler');

我猜ownCloud也有类似的功能,但它可能会记录所有错误消息,这就是为什么您会看到这条消息。

在2017年1月6日升级Apache 2.2之后,我的DS114上也出现了DSM 6.0.2-8451 Update 7。升级之前,一切正常

我已经更改了/volume1/@appstore/Apache2.2/usr/local/etc/apache22/conf/extra/mod_xsendfile.conf

XSendFilePath/var/services/web/var/services/homes

XSendFilePath/volume1/owncloud


现在它又起作用了

谢谢你的提示!我以前在网站上切换过PHP版本,但消息没有消失。最后,我看到他们中没有一个分配了dba处理程序,即:dba_DEFAULT。但是在网站的PHP设置->选择您使用的PHP版本->高级设置?我使用德语版本->高级我找到了dba.handler\u默认条目并插入了扁平文件而不是dba\u默认条目。该错误自24小时后未发生。。。我不想编辑我的帖子并将其作为解决方案添加,因为我不知道它有多准确-/