ownCloud 服务器:DBA_DEFAULT PHP 错误
ownCloud server: DBA_DEFAULT PHP error
我在 Synology NAS 上的 ownCloud 实例遇到问题 运行。我得到以下日志错误:
PHP Startup: No such handler: DBA_DEFAULT at Unknown#0
...这应该是关于与数据库的连接。
非常混乱,因为数据库可以被 ownCloud 调用,所有连接的客户端工作,网络界面工作等等......只剩下这条消息。
我的配置详情:
- 带有 DSM 6.0.2-8451 更新 7 的 Synology DS216j
- 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 Web Station 管理 HTTP 服务器和 PHP 版本。
或者我注意到此消息仅为 E_WARNING
级别,可以忽略(除非您需要 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
现在又可以用了
我在 Synology NAS 上的 ownCloud 实例遇到问题 运行。我得到以下日志错误:
PHP Startup: No such handler: DBA_DEFAULT at Unknown#0
...这应该是关于与数据库的连接。 非常混乱,因为数据库可以被 ownCloud 调用,所有连接的客户端工作,网络界面工作等等......只剩下这条消息。
我的配置详情:
- 带有 DSM 6.0.2-8451 更新 7 的 Synology DS216j
- 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 Web Station 管理 HTTP 服务器和 PHP 版本。
或者我注意到此消息仅为 E_WARNING
级别,可以忽略(除非您需要 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
现在又可以用了