Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Restler始终显示未在服务器上找到,但未在本地计算机上找到_Php_Api_Mod Rewrite_Restler - Fatal编程技术网

Php Restler始终显示未在服务器上找到,但未在本地计算机上找到

Php Restler始终显示未在服务器上找到,但未在本地计算机上找到,php,api,mod-rewrite,restler,Php,Api,Mod Rewrite,Restler,当我去 http://localhost/api/auth/login http://myurl.com/api/auth/login 我得到了我所期望的。。一些允许我登录的数据 然而,当我去 http://localhost/api/auth/login http://myurl.com/api/auth/login 我只是 { "error": { "code": 404, "message": "Not Found" } } 目前

当我去

http://localhost/api/auth/login
http://myurl.com/api/auth/login
我得到了我所期望的。。一些允许我登录的数据

然而,当我去

http://localhost/api/auth/login
http://myurl.com/api/auth/login
我只是

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

目前我们有两个人在这个项目上工作,当我们在本地机器上运行它时,我们两人都没有问题。我们已经到了将应用程序放在托管服务器上的地步,这样我们就可以在自己的机器之外开始测试它了

代码是相同的,我之所以知道这一点,是因为我们使用的是一个git存储库,服务器也在其中运行

我的机器是mac,我的伙伴是windows机器,我们的主机是linux机器。这并不重要,因为它们都应该使用mod_rewrite,这是restler3的一个要求

我能想到的唯一其他细节是服务器由HostMonster托管,运行PHP5.4.7

任何帮助都将不胜感激。你需要更多的信息吗

==编辑: 这是我的.htaccess文件。此外,服务器运行CGI/FastCGI而不是mod_php

Options -MultiViews
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 Off
</IfModule>
选项-多视图
DirectoryIndex.php
重新启动发动机
重写规则^$index.php[QSA,L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php[QSA,L]
php_标志显示_错误关闭

我只是在谷歌上搜索了“fastcgi mod_rewrite”,但这些链接都没有帮助:p

当你遇到这样的问题时,先尝试不重写url

而不是

http://myurl.com/api/auth/login
试一试

如果它起作用,你就会知道问题在于url重写

由于您使用的是CGI/FastCGI,请确保已设置

cgi.fix_pathinfo=0
在php.ini中,它将确保正确地将路径信息传递给Restler,以便Restler能够找到路由

如果url中的index.php不起作用,您可以尝试生成并验证
routes.php
,如下所述

routes.php
每次我们在调试模式下运行Restler时,它都会查看所有api方法及其文档注释,从而相应地生成路由。当我们在生产模式下运行它时,它会捕获routes.php中的信息并使用它,而不是每次都生成路由,从而提高效率

您可以通过在生产模式下初始化restler并在每次调用时刷新来检查生成的路由

$r = new Restler(true, true); 
然后检查生成的
routes.php

如果您的
routes.php
不包含任何路由,它将显示如下

<?php $o = array();

// ** THIS IS AN AUTO GENERATED FILE. DO NOT EDIT MANUALLY ** 
return $o;

您的
localhost
是否设置为
www
根目录??你能详细说明你的问题吗?这不重要,对吧?我的代码中没有提到“localhost”,但是是的,服务器的“localhost”目录是www。我得到的是Restler生成的JSON,所以我认为调用脚本不是问题,我想这是脚本做正确事情的问题。基本上,我希望返回JSON,但这个页面特别为我提供了一个使用Instagram{pagination:“instagramsurl.com”}之类的东西登录的链接。同样,我的本地版本没有问题,不确定这是否有帮助。你确定你的主机支持mod_重写吗?听起来你的URL重写工作不正常。您是否在使用heredoc来指示restler将函数映射到哪个URL?尝试将index.php添加到您的请求中,您会明白我的意思。因此,我发现我正在运行CGI/FastCGI,而不是Apache2.0处理程序作为服务器API。重写工作。好吧,至少,他们会像预期的那样重定向到index.php:P只是它后面的东西没有通过。我将使用.htaccess文件进行编辑,同时还要记住CGI的内容。@J.P.我的直觉告诉我,您的路径是相对于您正在使用的脚本源的,这意味着脚本可以从
http://localhost/
由于
/var/www/
,但使用
http://myurl.com
可指向
/var/www/myprojekt/version1/etc/
(或任何其他)目录。从下面答案中作为注释给出的代码的外观来看,您确实使用了
require\u once.../../etc”。但是你解决了,所以没关系;)我试过了,它给了我同样的404 Restler错误(在我看来,它像预期的那样重定向到了api/index.php,但是Restler没有正确地使用Restler魔术:P)我还试过取消注释和设置cgi.fix_pathinfo=0,但似乎也无法修复它:(该站点由Hostmonster托管,不确定这是否有帮助。)(也许这里有人熟悉一些我不熟悉的限制)你好,卢拉卡斯特!:)谢谢你在这方面的帮助。好吧,我照你说的做了,它在api/cache/routes.php中生成了这个文件,但我不知道该如何处理它。这个文件甚至看起来不完整:Restler每次在调试模式下运行它时都会查看所有api方法和它的文档注释来相应地生成路由。当我们在生产模式下运行它时,它会捕获routes.php中的信息并使用它,而不是每次都生成路由,从而提高效率。正如我看到的结果,没有添加任何路由。有些API类无法正确自动加载。您是否可以尝试手动包含至少一个API类?手动添加?My index.php如下所示:---抱歉注释中的换行符。哦!我手动添加了一个“auth.php”的include,它成功了!为什么它需要在这个服务器上而不是其他服务器上使用它?它可能与CGI/FastCGI有关吗??