sqlite disk io error!

sqlite disk io error!
写了个验证码的脚本 发短信 同时写道数据库。再命令行中测试都好好地,web运行就报了这个错误;请指点。
用http访问再写入时报错图片描述
命令行运行没问题

<?php

$content = rand(100000,999999);
$mobile = "xxxxxxxx";
$sendres = insertdb($mobile,$content);
print_r($sendres);
sock_get($mobile,$content);
function sock_get($mobile,$content) 
{ 
    // $gurl = "http://www.xxx.xxx.xxx.xxx.xxx; 
    // $info = parse_url($gurl); 
    // $fp = fsockopen($info["host"], 80, $errno, $errstr, 3); 
    // $head = "GET ".$info['path']."?".$info["query"]." HTTP/1.0\r\n"; 
    // $head .= "Host: ".$info['host']."\r\n"; 
    // $head .= "\r\n"; 
    // $write = fputs($fp, $head);
    // while (!feof($fp)){ 
    //     $line = fgets($fp);
    //     echo $line."<br>"; 
    // } 
} 
function insertdb($mobile,$code){
   $time=time();
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('11.db');
      }
   }

   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      INSERT INTO code (telephone,code,time)
      VALUES ($mobile, $code, $time);
EOF;
   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      return true;
   }
   $db->close();

}

?>
回复
阅读 3.5k
2 个回答

数据库文件的位置写绝对路径。

不同方式启动的时候,当前工作目录不一样的。

   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

注意这个逻辑,db对象成立所以有的这句打开成功,下面那个,Sql执行失败了,因为硬盘写入失败

fdisk -l,查看硬盘信息
df -h 查看各个挂载点信息

检查硬盘容量确认无误后检查Sql服务权限

当然出现这样的错误还有可能有以下几种情况:
1.硬盘物理坏道
2.硬盘逻辑坏道
3.分区表被破坏

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏