Restler始终返回未找到

时间:2012-09-07 18:58:52

标签: php web-services api rest restler

我被困在这里,在wamp我运行一切并且工作正常,但是,当我尝试在一个centos盒子中安装我的api时,我总是得到一个“Not Found”错误。

我不知道还能做什么!

即使说/你好的例子也失败了......

是否有处理restler的apache要求的规范?

任何想法?,它是一种迫切的

say.php:

<?php
class Say {
    function hello($to='world') {
        return "Hello $to!";
    }
}

的index.php

<?php
    require_once 'restler/restler.php';
    require_once 'say.php';

    $r = new Restler();
    $r->addAPIClass('Say');

    $r->setSupportedFormats('jsonpformat', 'jsonformat', 'xmlformat', 'yamlformat');
    $r->handle();

的.htaccess

DirectoryIndex index.php
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ index.php [QSA,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
<IfModule mod_php5.c>
    php_flag display_errors On
</IfModule>

错误:

未找到 在此服务器上找不到请求的URL / mylocation / say / hello。

这基本上就是我的所有代码,如果你们认为jsonpformat可能会按照我的方式进行,我可以在这里粘贴代码。

当我输入这样的网址时:http://myhost/mylocation/我收到一个json错误:

{
  "error": {
    "code": 404,
    "message": "Not Found"
  }
}

如果我输入http://myhost/mylocation/say/hello,那么我会收到 not found 错误,就像.htaccess一样无效。

[编辑]

如果我将“index.php”添加到这样的网址:http://myhost/mylocation/index.php/say/hello似乎有效,但我不能这样离开......

我从Restler returns 404 status code if index.php is not included in URL

得到了这个

1 个答案:

答案 0 :(得分:6)

好的,我找到了问题,感谢大家的帮助。

解决方案是将AllowOverride文件的httpd.conf变量设置为All而不是None。一旦我尝试它,它工作:)

除了apache的 mod_rewrite 之外,我没有找到另一个运行restler的要求,如果我这样做,我会编辑它并把它放在这里。

我发现这是 restler 的常见问题,在文档中提及它可能会很好,希望这可以帮到你。

PD :我必须说在编辑我的问题时投票失败是非常烦人的,因为我发布它后它甚至没有过一分钟,但是我尽可能快地做了。你可能会说“你为什么发布它呢?”由于restler需求部分,它不需要太多细节来回答......