gpt4 book ai didi

php - RESTful API 的 nginx 配置

转载 作者:可可西里 更新时间:2023-10-31 22:11:17 30 4
gpt4 key购买 nike

我是 nginx 和 php 的初学者,所以请原谅我的基本问题。

对于基于 RESTful 的 API (nginx + php),我需要一些有关 nginx 配置的帮助。

这是 nginx 配置的相关片段(如建议的 here ),用于将所有/api/v1/* 请求重定向到我的 apiv1.php 脚本:

    server {
server_name myServer;
root /usr/share/nginx/html;
location /api/v1/ {
try_files $uri $uri/ /apiv1.php?$args;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

现在的问题是,当我输入 http://myServer//api/v1/resource/GetInfo 时在我的浏览器中,apiv1.php 脚本似乎没有收到“资源/GetInfo”。实际上,_GET 和_REQUEST 是空的,但是_SERVER 看起来没问题!

在我的/etc/php5/fpm/php.ini 中,启用了以下相关配置:

request_order = "GP"
variables_order = "GPCS"
register_argc_argv = Off
auto_globals_jit = On.

您是否知道为什么 php _GET 和 _REQUEST 为空?这是否仅与我的 php 配置有关?

最好的问候,

最佳答案

替换这个:

location /api/v1/ {
try_files $uri $uri/ /apiv1.php?$args;
}

在您的服务器 block 中包含以下内容:

rewrite ^/api/v1/([^/]+)/([^/]+)/?$ /apiv1.php?class=$1&method=$2? last;

使用以下代码行创建一个名为 apiv1.php 的 php 文件并将其放置在您的 Web 服务器的根目录中:

<?php
$class = filter_input(INPUT_GET, 'class', FILTER_SANITIZE_STRING);
$method = filter_input(INPUT_GET, 'method', FILTER_SANITIZE_STRING);

echo $class;
echo '<br />';
echo $method;

通过在浏览器中访问以下链接进行测试:

http://myServer/api/v1/members/getInfo

关于php - RESTful API 的 nginx 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28094865/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com