0

Links I've seen include:

https://akrabat.com/running-slim-4-in-a-subdirectory/

https://discourse.slimframework.com/t/slim-4-httpnotfoundexception/3273/18

and some others

I'm trying to setup a Slim4 project on apache2. But trying to access it gives me the error

PHP Fatal error: Uncaught Slim\Exception\HttpNotFoundException: Not found....

I have my index file in /var/www/html/_projects/work/calc1/src.

The following is my calc.conf in /etc/apache2/sites-available:

<VirtualHost *:80> ServerName calc.mrid.local ServerAlias calc.mrid.local ServerAdmin webmaster@localhost DocumentRoot /var/www/html/_projects/work/calc1/src ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> 

This is my .htaccess located in src directory

RewriteEngine On RewriteBase /_projects/work/calc1/src/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L] RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

My index.php looks like this:

// use and require statements... $container = new Container(); AppFactory::setContainer($container); $container->set('view', function() { return \Slim\Views\Twig::create(__DIR__ . '/public/templates'); }); $app = AppFactory::create(); // even without this line it doesn't work $app->setBasePath("/_projects/work/calc1/src"); $app->add(TwigMiddleware::createFromContainer($app)); // my routes.... $app->run(); 

Has anyone worked with Slim4 on Apache2? If yes, can you please guide me ?

2
  • Please share definition of some routes that result in a HttpNotFoundException. Also please provide full exception message, specially the part that says which URL you were trying to reach that did not exist. Commented Apr 11, 2020 at 21:04
  • I think because DocumentRoot points to /var/www/html/_projects/work/calc1/src, you should avoid putting RewriteBase /_projects/work/calc1/src/ line in .htaccess. Please see this question. Commented Apr 11, 2020 at 21:19

1 Answer 1

0

The src/ directory is actually only meant for the PHP classes and must not be accessible to the web. The apache DocumentRoot should point to the public/ directory which contains your front controller public/index.php. Take a look at the Standard PHP package skeleton. More details about Slim and apache can be found in this Slim 4 Tutorial.

Sign up to request clarification or add additional context in comments.

2 Comments

i slightly modified my directory structure. i have my index.php in src and have all assets (css, js, images, templates) in public directory. will i have to change all this ?
just checked the skeleton link...it says that src will have the php files, and public will have web server files

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.