PHP Slim 4 HttpNotFoundException -- Routes not found when moving application to live server

fasenderos

I have a WordPress website that I have extended with the Slim Framework to provide some custom API. Everything works fine in local, but when I move the application on a live server (SiteGround), if I try to call any of the custom endpoints I get a 404 error Slim\Exception\HttpNotFoundExceptio.

This is my folder structure

In Local the root folder is C:\xampp\htdocs\example\

In remote the root folder is /home/customer/www/example.com/public_html/

api\
  vendor\
  public\
    .htaccess
    index.php
  routes\
    v1\
      autocomplete.php
  .htaccess
  composer.json
  composer.lock
wp-admin
wp-content
wp-includes
... all others WordPress files

In local I was able to call the endpoint http://localhost/example/api/v1/autocomplete, while on remote if I call https://www.example.com/api/v1/autocomplete I get a 404 not found error

code: 404
file: "/home/customer/www/example.com/public_html/api/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php"
line: 91
message: "Not found."
type: "Slim\Exception\HttpNotFoundException"

As per Slim documentation the Apache mod_rewrite is enabled by the default WordPress .htaccess and AllowOverride All is setted by default on all SiteGround server.

Here is the content of the important Slim files

root\api\.htaccess

RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

root\api\public\.htaccess

# Redirect to front controller
RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L] 

root\api\public\index.php

<?php
use Selective\BasePath\BasePathMiddleware;
use Slim\Factory\AppFactory;

require_once __DIR__ . "/../vendor/autoload.php";

$app = AppFactory::create();

// Add Slim routing middleware
$app->addRoutingMiddleware();

// Set the base path to run the app in a subdirectory.
// This path is used in urlFor().
$app->add(new BasePathMiddleware($app));

$app->addErrorMiddleware(true, true, true);
 
// PUT ALL ROUTES HERE
require_once "../routes/v1/autocomplete.php";

// Run app
$app->run();

root\api\routes\v1\autocomplete.php

<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;

$app->get("/v1/autocomplete", function (Request $request, Response $response) {
  $params = $request->getQueryParams();
  $payload = array(
    "status" => "error",
    "message" => "missing param 'user_input'",
  );
  if (isset($params["user_input"])) {
    $payload = getSuggestions($params);
  }
  $response->getBody()->write(json_encode($payload));
  return $response
    ->withHeader("Content-Type", "application/json");
});

Thanks in advance

odan

If you run your Slim 4 app in a sub-directory of the webservers DocumentRoot, you need to set the basePath.

Maybe in your case:

$app->setBasePath('/api');

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

CodeIgniter: 404 Page Not Found on Live Server

PHP Slim Framework: The requested URL was not found on this server

Slim Framework: routes and controllers

NPM live-server: command not found

PHP Slim how to check if a request is application/json

How to access all routes from Slim 3 php framework?

Error: Class 'Route' not found in routes.php when testing standalone Laravel package using Orchestra Testbench

Moving routes/web.php file gives class not found error

react router 4 "Not Found" page with nested routes

All requests are not found (404) when the application runs on an external server

Nuxt application returns 404 when dynamic routes are refreshed (Tomcat Server)

Getting ""Not Found The requested URL was not found on the server" when Flask app server is placed in folder with other files needed for application

codeigniter routes not working without index.php in live server inside default var/www/html folder

Slim 4 get all routes into a controller without $app

Should localStorage persist when application is run via live server?

php Fatal error: Class 'Slim' not found in

How to get Slim PHP Framework routes in a subdirectory on nginx

PHP Slim API 404 not found

Slim PHP 500 Internal Server Error

Meteor server side routes not being found

PHP Slim - how to have multiple app objects for different routes?

Slim Framework PHP - block routes access to users in some conditions

Moving wordpress site from live server to localhost

Setting PayPal PHP Application live

List all routes with group in php slim 3

SLIM Error :: AuthController not found when SLIM app hosted on server

Application says module not found after moving to directory

Serving Static Files with Slim Application v3 Using Built In PHP Server

Coding errors when moving the application

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    pump.io port in URL

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

  14. 14

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  15. 15

    How to use merge windows unallocated space into Ubuntu using GParted?

  16. 16

    flutter: dropdown item programmatically unselect problem

  17. 17

    Pandas - check if dataframe has negative value in any column

  18. 18

    Nuget add packages gives access denied errors

  19. 19

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  20. 20

    Generate random UUIDv4 with Elm

  21. 21

    Client secret not provided in request error with Keycloak

HotTag

Archive