Php Can';找不到resources.json
出于某种原因,当我使用Restler的API Explorer(一个招摇过市的UI分支)将我的API部署到生产环境中时,当我加载时,它会给我一个一般的404错误:Php Can';找不到resources.json,php,restler,swagger,Php,Restler,Swagger,出于某种原因,当我使用Restler的API Explorer(一个招摇过市的UI分支)将我的API部署到生产环境中时,当我加载时,它会给我一个一般的404错误: /api/explorer 当我更明确地陈述: /api/explorer/index.html 它加载页面的框架,但在标题下方以红色文本报告“404:notfound../resources.json”: 我相当肯定,当同样的文件在本地工作时,会有一些环境问题爆发。我还检查了/api/explorer目录中的.htaccess
/api/explorer
当我更明确地陈述:
/api/explorer/index.html
它加载页面的框架,但在标题下方以红色文本报告“404:notfound../resources.json”:
我相当肯定,当同样的文件在本地工作时,会有一些环境问题爆发。我还检查了/api/explorer
目录中的.htaccess文件,在我看来它是正确的:
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.html [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html [QSA,L]
</IfModule>
DirectoryIndex.php
重新启动发动机
重写规则^$index.html[QSA,L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.html[QSA,L]
任何帮助都将不胜感激。您可以在Restler Github页面上查看自述文件
是否添加了“Luracast\Restler\Resources”类以在API根目录下创建Resources.json 在您自己的index.php中,addAPIClass部分应该如下所示:
$r=new Restler()代码>
$r->addAPIClass('Luracast\\Restler\\Resources')//这将在API根目录下创建resources.json
/。。。您自己的addApiClass
$r->handle()代码>
它在文档中的“使用”下,但我也很难弄清楚这一点…结果表明,所有问题都归结为mod_重写问题。我仍然不能100%理解为什么这个问题出现在一个环境中,而在另一个环境中却没有出现完全相同的httpd.conf
和.htaccess
。哦,解决方案是使用RewriteBase
指令在重写规则中明确说明您的基本url
在API目录中,我现在有以下.htaccess
文件:
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /api
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
为了解决这个问题,我遇到了一个非常宝贵的技巧,就是打开Apache的mod_重写日志
# Adding logging for Rewrites
RewriteLog logs/rewrite.log
RewriteLogLevel 2
将其放在httpd.conf
的任何全局范围的区域中;我把它放在已经有关于日志记录的条目周围,但是如果你更喜欢的话,你也可以把它放在末尾。此外,有关重写疑难解答的基本知识包括(如果这是基本知识,请道歉):
确保您的httpd.conf为您提供Restler的目录设置了AllowOverride All
和选项FollowSymLinks
李>
您可以将所有配置放在httpd.conf
中,并完全避免.htaccess
文件(这样做也会快一点),但如果这样做,请记住httpd.conf
与.htaccess
的相对url引用有绝对url引用
确保在api根目录中有具有写入权限的缓存目录具体是什么?我已经看过很多次自述,但正如我妻子会告诉你的那样,我有时看不到我面前的是什么。是的,我做到了。事实上,相同的文件(在/restler和/api目录中)在我的桌面开发环境中可以正常工作,但在生产环境和笔记本电脑环境中(矛盾的是,使用dropbox从工作的开发环境镜像过来)都不工作(aka,上面有错误)。注意:我已将RewriteLogLevel设置为2,因为这样可以提供有用的信息,而不会太健谈。
# Adding logging for Rewrites
RewriteLog logs/rewrite.log
RewriteLogLevel 2