0
我正在開發一個Yii2應用程序,並且有時,我用於數據庫的Sqlite3文件變成「只讀」(由於服務器上發生其他事情),並且用戶正在獲取令人討厭的PHP異常錯誤而不是很好的顯示錯誤信息。 我想使用「beforeSave()」函數來檢查數據庫是否可寫,但我不知道檢查web進程(www-data)是否有寫入權限的最佳方法。 任何任何想法? 我有以下兩個功能在我的基本模型:如何檢查我的Yii2應用程序中的web進程是否可以寫入sqlite數據庫文件?
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;
}
}
定義只讀?磁盤IO層,還是SQLite3併發層? – SOFe
它與擁有者不同於「www-data」一樣簡單。要麼sqlite文件本身或父目錄 –
http://php.net/is-writable? – SOFe