質問概要
ユーザがアクセスするindex.php
に、APIっぽくしたsql.php
の出力結果を表示させたい。
しかし、以下の様なエラーが出て、解決策が見当たらない。
<b>Fatal error</b>: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [14] unable to open database file' in /Users/USERNAME/Sites/database/operation/sql.php:7 Stack trace: #0 /Users/USERNAME/Sites/database/operation/slq.php(7): PDO->__construct('sqlite:../db/da...') #1 /Users/USERNAME/Sites/database/index.php(20): require_once('/Users/USERNAME...') #2 {main} thrown in <b>/Users/USERNAME/Sites/database/operation/sql.php</b> on line <b>7</b><br />
環境
- MacOSX Yosemite 10.10.5(14F1912)
- PHP 5.5.36 (cli) (built: Jun 12 2016 23:47:46)
- Server version: Apache/2.4.16 (Unix) / Server built: Jul 22 2015 21:03:09
- Firefox 48.0.1
質問詳細
ユーザがアクセスするページ(index.phpとします)と、
データベースからデータを取得し出力するAPIのようなPHP(sql.phpとします)を作りました。
そして、ユーザがindex.phpにアクセスした際に、
sql.phpから返されたデータベースのデータ(JSON形式)を、
riot.jsを使ってindex.phpに表示させたいと思っております。
しかし、いざ実行してみると何も出力されておらず、
ブラウザの「ソースコードを見る」から出力ソースを見てみると、以下の様なエラーが表示されておりました。
<b>Fatal error</b>: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [14] unable to open database file' in /Users/USERNAME/Sites/database/operation/sql.php:7 Stack trace: #0 /Users/USERNAME/Sites/database/operation/slq.php(7): PDO->__construct('sqlite:../db/da...') #1 /Users/USERNAME/Sites/database/index.php(20): require_once('/Users/USERNAME...') #2 {main} thrown in <b>/Users/USERNAME/Sites/database/operation/sql.php</b> on line <b>7</b><br />
エラー文で調べてみると、パーミッションに問題があると書かれているページが多く出てきます。
しかし、データベースファイルのあるフォルダのパーミッションは777、
データベースファイルのパーミッションは666でした。
とりあえず、データベースファイルのパーミッションを777にしてみましたが、エラーは消えません。
これは、どのように解消すればよろしいのでしょうか。
お知恵をお貸しください。
Appendix
index.phpの、sql.phpを読みだす箇所(参考サイト様)
lang
1<?php 2ob_start(); 3include('./operation/sql.php'); 4$contents = ob_get_contents(); 5ob_end_clean(); 6 7echo "$contents"; 8?>
sql.php全文(一部省略)
なお、jQueryのajax通信や直接アクセスするとエラーなく出力されます。
lang
1<?php 2// DB操作開始 3$dbh = new PDO('sqlite:data.db'); 4 5// ゲームの評価をユーザの評価数で返す 6$sth = $dbh->prepare("SQL文は省略"); 7$sth->execute(); 8 9// JSON形式に変換し、返していく 10$count = 0; 11$result = "["; 12while( $row = $sth->fetch() ){ 13 $gameData = $dbh->prepare("SQL文は省略"); 14 $gameData->execute( array() ); 15 16 $gd = $gameData->fetch(); 17 18 // 配列をJSONに変換 19 $json = json_encode($gd, JSON_UNESCAPED_UNICODE); 20 21 // JSONをまとめる 22 $result .= $json . ','; 23 24 $count = $count + 1; 25 26 27 if ( $count > 10 ){ 28 break; 29 } 30 31} 32 33// 最後の余分な一文字を削除 34$result = substr($result, 0, -1); 35 36// JSONの終わり 37$result .= "]"; 38 39// 出力 40echo $result; 41 42 43?> 44
回答1件
あなたの回答
tips
プレビュー