"The SilverStripe Framework is missing" message

I have attempted to install SilverStripe using Composer. Following the example on the SilverStripe tutorial “Up and Running: Setting up a local SilverStripe dev environment”, I ran the following:

$ composer create-project silverstripe/installer example

Although the installation ran without error, I could not open the site using http://{your localhost}/example/public.

I notice two things:

  1. A warning here: ~/example/public/install-frameworkmissing.html. The warning says: “The SilverStripe Framework is missing”.

  2. The following directory exists: ~/example/public/resources/vendor/silverstripe/framework

The SilverStripe version is 4.x. It sits on:
Debian 9 (stretch)
MariaDB 10.4
Nginx
PHP Version 7.2.18-1 with FPM
Composer 1.8.5

It looks as though the SilverStripe framework does in fact exist. Can anybody tell me how to work around the implications of the “The SilverStripe Framework is missing” message?

Regards

Have you set up the Ngnix rules, root directory, etc?

There are examples here: https://docs.silverstripe.org/en/4/getting_started/installation/how_to/configure_nginx/

If you’ve got the web root pointing at the /public directory, you shouldn’t see the public bit in the URL.

Thank you for your comments.

I set up Nginx with the rewrite rules listed on SilverStripe’s “Getting started / Installation / How to / Configure nginx” (https://docs.silverstripe.org/en/4/getting_started/installation/how_to/configure_nginx/).

I changed the root path to:

root /home/userName/example/public;

After that I restarted the Nginx service, reloaded the FPM service and ran:

$ composer create-project silverstripe/installer example

At this stage, the “Viewing your website” section of SilverStripe’s “Up and Running: Setting up a local SilverStripe dev environment” (https://www.silverstripe.org/learn/lessons/v4/up-and-running-setting-up-a-local-silverstripe-dev-environment-1?_ga=2.202598361.93838241.1559079731-1249458827.1558932434) says that running http://{your localhost}/example/public in a web browser will show an install page. In my case it does not. If I manually navigate my way to the public directory in the web browser, the only file I can open is the one called install-frameworkmissing.html.

It would be nice if I could find a way of preventing that file from showing.

A couple of things:

If you’ve set the document root of the server to example/public then you shouldn’t need to be adding /public to the URL you’re visiting. Assuming it’s the only site on there, then visiting http://localhost should show the site.

The public directory should contain a number of files, including an index.php, .htaccess, favicon.ico, etc. If they’re not present, it’s a bit odd and that would suggest something didn’t work with the composer installation. You can manually copy them across if needed, (they’re in the vendor/silverstripe/recipe-core directory).

Thank you DorsetDigital.

Your comments prompted me to learn about the Nginx server block configuration. I had to do that by trial and error. The server block examples given by both Nginx for SilverStripe and SilverStripe itself did not work for me.

I now realise that Nginx always wants to put the sites it serves in the /var/www/ directory. Those vague ‘/path/to/ss/folder/public’ references in the block configuration examples made me believe that you could put the site files anywhere and that that path would find them.

I could find no how-to web sites that specified where Composer should put the framework files and what was to happen afterwards. Perhaps installing the SilverStripe framework using Composer is relatively new and is still a work in progress.

In my journey so far, I have jumped the hurdles presented by the “CMS/Framework Installation” page and have reached the “Your Site Name” page. I now face the confusion presented by SilverStripe’s “Creating your first project” tutorial. The directory structures it describes do not resemble the structures that Composer installed. I can see many more hours of trial and error coming up.

Anyway, I have overcome the non-existent problem of “The SilverStripe Framework is missing”. This post can be marked as solved.