无法在php中获取$\u请求值
我正在尝试创建一个restful api,唯一的问题是我无法获取$\u请求值。同样的代码在本地主机上运行良好,但在服务器上运行不好。这可能是由于我的htaccess代码造成的。当通过url调用api时,无法在php中获取$\u请求值,php,.htaccess,restful-url,Php,.htaccess,Restful Url,我正在尝试创建一个restful api,唯一的问题是我无法获取$\u请求值。同样的代码在本地主机上运行良好,但在服务器上运行不好。这可能是由于我的htaccess代码造成的。当通过url调用api时,processApi是被调用的函数,并找出此api的哪个函数是通过url调用的 比如说 现在我试图调用api类中的test函数 htaccess代码重定向我的url 类中的第一个函数是检查测试函数是否存在的processApi 但是在processApi函数$\中,请求值为空 这是在服务器上发生
processApi
是被调用的函数,并找出此api的哪个函数是通过url调用的
比如说
现在我试图调用api
类中的test
函数
htaccess代码重定向我的url
类中的第一个函数是检查测试函数是否存在的processApi
但是在processApi
函数$\中,请求值为空
这是在服务器上发生的,但在本地主机上可以正常工作
这是访问代码
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ file.php?request=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ file.php [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ file.php [QSA,NC,L]
</IfModule>
通过在服务器上运行此代码,我得到了
{"status":"402","msg":"function not exist"}
仅仅因为$\u REQUEST['REQUEST']为空
请告诉我为什么get
$\u REQUEST['REQUEST']
=null。我的htaccess代码是否在$\u请求['REQUEST']
中给出了正确的值?您可能应该查看PHP的$\u服务器
变量,而不是$\u请求
$_SERVER['REQUEST_URI'] should give you the correct URI for /api/test
在$\u服务器上运行var\u dump
可以提供有关当前请求(以及处理该请求的服务器环境)的更多信息
希望这有帮助 这可能是由于在第一条规则之后运行的最后一条规则造成的。按如下方式更改代码:
<IfModule mod_rewrite.c>
RewriteEngine On
# skip after rewriting first time
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ file.php?request=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule . file.php [L]
</IfModule>
重新启动发动机
#第一次重写后跳过
重写条件%{ENV:REDIRECT_STATUS}^$
重写规则^-[L]
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-s
重写规则^(.*)$file.php?请求=$1[QSA,L]
RewriteCond%{REQUEST_FILENAME}-d[或]
重写cond%{REQUEST_FILENAME}-s
重写规则。file.php[L]
您是否尝试过var\u dump($func)
?如果它应该像您期望的那样是test
,那么为什么您的API类中没有functiontest
?另外,请记住PHP不支持PUT或DELETE请求之类的原生功能。为了获取数据,您需要调用parse\u str(file\u get\u contents('php://input“),$\u DATA)
这会将传递到服务器的任何数据放入$\u DATA变量中。首先感谢您的回答,但不幸的是,在使用您的代码更改htaccess
代码后,我仍然收到$\u请求['REQUEST']processApi()函数中的null
将您的file.php重命名为其他文件,并使用以下代码创建一个新的file.php:
并告诉我它打印了什么
<IfModule mod_rewrite.c>
RewriteEngine On
# skip after rewriting first time
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ file.php?request=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule . file.php [L]
</IfModule>