美文网首页
Fatal error: Uncaught PDOExcept

Fatal error: Uncaught PDOExcept

作者: fisher爱吃鱼 | 来源:发表于2018-06-29 09:56 被阅读30次

    今天在将一个本地PHP网站部署到服务器后,访问某页面时发生如下错误:

    Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 14 unable to open database file in /var/www/html/xxx/search.php:48

    • 本地测试环境

      • 操作系统:Windows 10 专业版
      • PHP 版本:7.1.x
    • 远程服务器环境

      • 操作系统:CentOS 6
      • PHP 版本:7.0.x

    起先怀疑是PHP 版本不同引起的,因为刚刚才解决了一个7.1.x才支持的const变量作用域修饰符的问题,在7.0.x中你不能在const变量前面使用public等修饰符,比如:
    public const INVALID_ACCESS_CODE = -1
    是错误的,必须把前面的public去掉。而在7.1.x中就可以这样写了。

    但检查了几遍代码也没发现哪里有问题,进一步的观察发现,这个错误发生在对数据库有写操作的时候,读没有问题。然后在网上搜了一下,发现可能是权限的问题,于是又把远程服务器上数据库文件的权限改成可读写,问题依然存在。

    继续搜索,终于在一篇文章里提到相同的问题,罪魁祸首也是文件权限,SQLite在写数据库的时候还会生成一个xxx.db-jounal的临时文件,因此除了对数据库文件拥有读写权限,还需要对数据库所在的目录拥有读写权限。

    于是对目录设置读写权限后,问题迎刃而解。

    相关文章

      网友评论

          本文标题:Fatal error: Uncaught PDOExcept

          本文链接:https://www.haomeiwen.com/subject/sxvoyftx.html