我正在开发一个Yii2应用程序,有时,我用于数据库的Sqlite3文件变成“只读”(由于服务器上发生了其他事情),并且用户遇到了讨厌的PHP异常错误,而不是显示的错误消息。我正在尝试使用“ beforeSave()”函数来检查数据库是否可写,但是我不知道检查Web进程(www-data)是否对其具有写权限的最佳方法。有人有想法吗?我的基本模型具有以下两个功能:
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
// Check if database is writable
if($this->attemptDBWrite())
return true;
else
{
\Yii::$app->getSession()->setFlash('error', 'Database is not writable by the application user');
return false;
}
} else {
return false;
}
}
和“ attemptDBWrite()”函数:
public function attemptDBWrite()
{
try {
$connection = \Yii::$app->db;
// SOME CODE NEEDED HERE TO CHECK <<<=========
} catch (\yii\db\Exception $e) {
\Yii::$app->getSession()->setFlash('error', var_dump($e));
return false;
}
}
public function attemptDBWrite()
{
try {
$connection = \Yii::$app->db;
if (is_writable($database_source_path)) {
return false;
}
} catch (\yii\db\Exception $e) {
\Yii::$app->getSession()->setFlash('error', var_dump($e));
return false;
}
}
$ database_source_path-是sqlite数据库文件的路径
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句