简体   繁体   中英

Luracast\Restler: NGINX 404 not found

I'm trying to install luracast restler on nginx + php7.1 but I always get the following output. (On localhost with apache + php 7.1 everything works fine)

 { "error": { "code": 404, "message": "Not Found" }, "debug": { "source": "Routes.php:431 at route stage", "stages": { "success": [ "get" ], "failure": [ "route", "negotiate", "message" ] } } } 

When I try resources.json I get this:

 { "apiVersion": "1", "swaggerVersion": "1.1", "basePath": "https://api.example.com/api", "produces": [ "application/json" ], "consumes": [ "application/json" ], "apis": [] } 

NGINX.conf:

 server { listen *:443 ssl http2; server_name api.example.com; keepalive_timeout 70; root /var/www/public; # Security add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; fastcgi_param HTTPS on; location /api/ { try_files $uri $uri/ /api/index.php$is_args$args; } location ~ \\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi.conf; } location ~ \\.(aspx|jsp|cgi)$ { return 410; } location ~ /\\.ht { deny all; } ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_prefer_server_ciphers on; ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem; } 

index.php:

 <?php require_once 'vendor/restler.php'; use Luracast\\Restler\\Restler; use Luracast\\Restler\\Defaults; Luracast\\Restler\\Resources::$hideProtected = false; Defaults::$crossOriginResourceSharing = true; Defaults::$accessControlAllowOrigin = '*'; Defaults::$accessControlAllowMethods = 'GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD'; $r = new Restler(); $r->addAPIClass('Resources'); $r->addAPIClass('Explorer'); $r->addAPIClass('Controller\\User'); $r->addAPIClass('Controller\\Place'); $r->addAPIClass('Controller\\Event'); $r->addAPIClass('Controller\\Post'); $r->addAPIClass('Controller\\Login'); $r->addAPIClass('Controller\\Register'); $r->addAuthenticationClass('Controller\\AccessControl'); $r->handle(); 

On localhost with apache all works fine and I get the following output:

 { "apiVersion": "1", "swaggerVersion": "1.1", "basePath": "http://localhost/api", "produces": [ "application/json" ], "consumes": [ "application/json" ], "apis": [ { "path": "/resources/user.{format}", "description": "Class User" }, { "path": "/resources/place.{format}", "description": "Class Place" }, { "path": "/resources/event.{format}", "description": "Class Event" }, { "path": "/resources/post.{format}", "description": "Class Post" }, { "path": "/resources/login.{format}", "description": "Class Login" }, { "path": "/resources/register.{format}", "description": "Class Register" } ] } 

I also tried composer update to update the generated autoload routes. But doesn't work. Does anyone have an answer?

Best regards

Restler is working fine, that's why you get JSON output :)

But your classes does not seem to load.

Try to include them manually and see if it fixes the issue!

Then you can try /user/{id} and see if it works!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM