Я запускаю небольшой веб-сервер на моем малине pi, используя nginx, php5 и sqlite3. К сожалению, когда я пытаюсь вставить некоторые данные в свою базу данных, он просто останавливается на sqlite_open()
. Нет ошибок, он просто останавливается.PHP, не открывающий базу данных SQLite3
<html>
<head>
<title>halp</title>
<style>
* {font-family:verdana;}
</style>
</head>
<body>
<p><h2>Log in</h2></p>
<form action="" method="POST">
<table>
<tr><td>Username</td><td><input type="text" name="user"></td></tr>
<tr><td>Password</td><td><input type="password" name="pass"></td></tr>
<tr><td><input type="submit" value="Submit"></td><td><input type="checkbox" value="r" name="r"></td></tr>
</table>
</form>
<?php
if(isset($_POST['r']) || isset($_POST['user'])){
$reg = $_POST['r'];
if($reg == 'r'){
// echo $reg, "<br>";
echo "Registering... <br>";
$user = md5($_POST['user']);
$pass = md5($_POST['pass']);
// echo "user and pass <br>";
// echo "user: ", $user, " pass: ", $pass, "<br>";
try{
// echo "inside try <br>";
$db = sqlite_open('testdb', 0666, $error); //stops here
echo "error: ", $error->getMessage();
} catch (Exception $e) {
echo "error: ", $e->getMessage();
}
// echo "sqlite_open <br>";
if(!$db) { die($error); }
$query = "INSERT INTO users VALUES('$user', '$pass')";
$registered = sqlite_query($db, $query);
// echo "sqlite_exec";
if($registered){
echo "New user registered.<br>";
// echo $user." ";
// echo $pass;
} else { die($error); }
sqlite_close($db);
}
else{
$user = md5($_POST['user']);
$pass = md5($_POST['pass']);
// print $user."\n";
// print $pass."\n";
$db = new SQLite3('testdb');
$results = $db->query("SELECT * FROM users WHERE user = '$user' AND pass = '$pass';");
if(!$results){ echo 'Database error'; }
else {
$resultArray = $results->fetchArray(SQLITE3_NUM);
if($resultArray[0] == $user && $resultArray[1] == $pass){
echo 'Password and username match found!';
}
else{
echo 'Password and username do not match.';
}
}
}
}
?>
<br>
<a href="index.html">Back</a>
</body>
</html>
Как только оно доходит до sqlite_open()
, оно останавливается. Как вы можете видеть, в нижней части кода есть ссылка на index.html
, но когда я запускаю этот файл, он не отображается. echo
s, которые я прокомментировал, говорят мне, что я добираюсь до утверждения try.
Я попробовал несколько вещей, чтобы решить эту проблему:
- Создание базы данных с помощью
sqlite3
в командной строке - баловаться с Nginx & PHP конфиги
- В частности, используя свои собственные сайты с поддержкой
- Изменение значения
sqlite.assoc_case
вphp.ini
. Разочаровывает, есть ссылка на страницу на php.net, которая не существует.
- Поскольку
sqlite_open()
создает базу данных, если он не найден, я использовал это, чтобы создатьtestdb
chmod a+rwx testdb
chmod a+rwx /var/www/html
- Добавление себя
www-data
группы chgrp -R www-data /var/www/html
- Различные браузеры
- IE ненавидит это
- Rebooting даже
Это не будет так беситься индуцировать, если я по крайней мере, было сообщение об ошибке. gah.
Спасибо. Тогда это просто проблема поиска документов, запутанных. На странице для 'sqlite_open()' кто-то указал, что это было только для sqlite2, но они были полностью похоронены downvotes. – user1610406