0

我正在尝试配置 ArrestDB 为我的站点创建一个 api。
https://github.com/alixaxel/ArrestDB

正如它在安装中所说,我需要将 $dsn 更改为: MySQL:

$dsn = 'mysql://[user[:pass]@]host[:port]/db/;

目前我有

$dsn = 'mysql://user:password@localhost/database/';

我用上面的括号试过了,但这会导致 503 服务不可用错误。当我删除括号时,会导致此错误:

{
    "error": {
        "code": 400,
        "status": "Bad Request"
    }
}

你知道我做错了什么吗?一切对我来说都是正确的

编辑:

尝试以下建议并返回 api:

array(28) {        
  ["REDIRECT_STATUS"]=> string(3) "200" 
  ["HTTP_HOST"]=> string(16) "api.shopsavr.com" 
  ["HTTP_CONNECTION"]=> string(10) "keep-alive" 
  ["HTTP_ACCEPT"]=> string(74) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" 
  ["HTTP_USER_AGENT"]=> string(109) "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36" 
  ["HTTP_ACCEPT_ENCODING"]=> string(17) "gzip,deflate,sdch" 
  ["HTTP_ACCEPT_LANGUAGE"]=> string(14) "en-US,en;q=0.8" 
  ["PATH"]=> string(209) "/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/courier-imap/sbin:/usr/lib/courier-imap/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin" 
  ["SERVER_SIGNATURE"]=> string(0) "" 
  ["SERVER_SOFTWARE"]=> string(136) "Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.4.20" 
  ["SERVER_NAME"]=> string(16) "api.shopsavr.com" 
  ["SERVER_ADDR"]=> string(11) "50.28.7.250" 
  ["SERVER_PORT"]=> string(2) "80" 
  ["REMOTE_ADDR"]=> string(12) "67.247.5.220" 
  ["DOCUMENT_ROOT"]=> string(30) "/home/shopsavr/public_html/api" 
  ["SERVER_ADMIN"]=> string(26) "webmaster@api.shopsavr.com" 
  ["SCRIPT_FILENAME"]=> string(40) "/home/shopsavr/public_html/api/index.php" 
  ["REMOTE_PORT"]=> string(5) "58487" 
  ["REDIRECT_URL"]=> string(8) "/PRODUCT" 
  ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" 
  ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" 
  ["REQUEST_METHOD"]=> string(3) "GET" 
  ["QUERY_STRING"]=> string(0) "" 
  ["REQUEST_URI"]=> string(8) "/PRODUCT" 
  ["SCRIPT_NAME"]=> string(10) "/index.php" 
  ["PHP_SELF"]=> string(10) "/index.php" 
  ["REQUEST_TIME_FLOAT"]=> float(1383666718.92) 
  ["REQUEST_TIME"]=> int(1383666718)

}

4

3 回答 3

1
http://localhost/ArrestDB/index.php/[table]

非常适合我

不要把括号放在dns上......还在研究如何发布......

于 2015-10-18T07:13:35.080 回答
0

问题

根据您的代码和转储信息,ArrestDB 没有收到您的完整请求。你的内容$_SERVER['REQUEST_URI']"/"这意味着你的.htaccess文件中可能有问题,应该捕获任何地址并将其定向到 ArrestDB PHP 文件。

背景资料

通常,范围内的 HTTP 响应代码4XX表示错误请求。通常,范围内的 HTTP 响应代码5XX表示错误。

4XX如果发生其他错误(错误的 SQL 参数、服务器超时等),ArrestDB 将使用错误代码(不是精确的 400,而是另一个 4XX 错误)进行响应。5XX如果数据库连接以任何方式“坏”,ArrestDB 将响应错误代码(特别是 503)。

推理

由于它准确地以 400 作为错误代码进行响应,这意味着它无法提供“特定”错误代码(400 表示“未知类型的错误连接”)。

可能的修复

首先要确认我的理论,我建议您删除var_dump + exit我要求您输入的内容,而是写$_SERVER['REQUEST_URI'] = "/products";。这应该迫使 ArrestDB 认为它需要列出该products表。在确认我们使用此 hack 时一切正常后,我们将尝试解决您的.htaccess问题。

于 2013-11-05T15:56:32.023 回答
0

如果您没有 .htaccess 文件,则需要使用完整的 URL,如下所示:http://localhost/ArrestDB/index.php/[table]

于 2015-06-08T21:38:37.830 回答