MissingControllerException after installation

I’ve nearly got Passbolt up and running but I’ve ran into an issue now where the Javascript and CSS content isn’t loading. When I navigate directly to a file, such as /css/login.min.css, I get a Not Found error. I’m not sure if this is a rewrite issue. As far as I can tell, my nginx configuration matches URL Rewiting page. My healthcheck shows an error about the certificate but I am using a locally-trusted CA for internal certificates.

app/tmp/logs/error.log

Request URL: /js/lib/steal/steal.production.js
Stack Trace:
#0 /var/www/html/passbolt/app/webroot/index.php(110): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 /var/www/html/passbolt/index.php(41): require('/var/www/html/p...')
#2 {main}
2018-01-10 15:57:48 Error: [MissingControllerException] Controller class CssController could not be found.
Exception Attributes: array (
  'class' => 'CssController',
  'plugin' => NULL,
)
Request URL: /css/login.min.css
Stack Trace:
#0 /var/www/html/passbolt/app/webroot/index.php(110): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 /var/www/html/passbolt/index.php(41): require('/var/www/html/p...')
#2 {main}
2018-01-10 15:57:48 Error: [MissingControllerException] Controller class CssController could not be found.
Exception Attributes: array (
  'class' => 'CssController',
  'plugin' => NULL,
)
Request URL: /css/main.min.css
Stack Trace:
#0 /var/www/html/passbolt/app/webroot/index.php(110): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 /var/www/html/passbolt/index.php(41): require('/var/www/html/p...')
#2 {main}
2018-01-10 15:57:48 Error: [MissingControllerException] Controller class JsController could not be found.
Exception Attributes: array (
  'class' => 'JsController',
  'plugin' => NULL,
)
Request URL: /js/lib/modernizr/modernizr-custom.min.js
Stack Trace:
#0 /var/www/html/passbolt/app/webroot/index.php(110): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 /var/www/html/passbolt/index.php(41): require('/var/www/html/p...')
#2 {main}

Healthcheck

---------------------------------------------------------------
     ____                  __          ____
    / __ \____  _____ ____/ /_  ____  / / /_
   / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /
 /_/    \__,_/____/____/_.___/\____/_/\__/

 Open source password manager for teams
---------------------------------------------------------------
 Healthcheck shell
---------------------------------------------------------------

 Environment

 [PASS] PHP version 7.0.25
 [PASS] PCRE compiled with unicode support
 [PASS] The temporary directory and its content are writable
 [PASS] The public image directory and its content are writable

 Config files

 [PASS] The core config file is present
 [PASS] The database config file is present
 [PASS] The email config file is present
 [PASS] The application config file is present

 Core config

 [PASS] Debug mode is off.
 [PASS] Cache is working.
 [PASS] Unique value set for security.salt
 [PASS] Unique value set for security.cipherSeed
 [PASS] Full base url is set to https://passbolt.##############
 [PASS] App.fullBaseUrl validation OK.
 [PASS] /healthcheck/status is reachable.

 SSL Certificate

 [FAIL] SSL peer certificate does not validate
 [FAIL] Hostname does not match when validating certificates.
 [WARN] Using a self-signed certificate
  [HELP] stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
stream_socket_client(): Failed to enable crypto
stream_socket_client(): unable to connect to ssl://passbolt.##############:443 (Unknown error)

 Database

 [PASS] Configured to use a supported database backend
 [PASS] The application is able to connect to the database
 [PASS] Not using a prefix for database tables
 [PASS] 20 tables found
 [PASS] Some default content is present
 [PASS] The database schema up to date.

 GPG Configuration

 [PASS] PHP GPG Module is installed and loaded
 [PASS] The server gpg key is not the default one
 [PASS] The environment variable GNUPGHOME is set to /usr/share/httpd/.gnupg
 [PASS] The directory /usr/share/httpd/.gnupg containing the keyring is writable by the user the webserver is running as.
 [PASS] The public key file is defined in app/config.php and readable.
 [PASS] The private key file is defined in app/config.php and readable.
 [PASS] The server key fingerprint matches the one defined in app/config.php.
 [PASS] The server key defined in the app/Config.php is in the keyring.
 [PASS] There is a valid email id defined for the server key.
 [PASS] The public key can be used to encrypt and sign a message.
 [PASS] The private key can be used to decrypt a message.

 Application configuration

 [PASS] Using latest passbolt version (1.6.5)
 [PASS] Passbolt is configured to force SSL use
 [PASS] App.fullBaseUrl is set to HTTPS
 [PASS] Selenium API endpoints are disabled.
 [PASS] Search engine robots are told not to index content.
 [PASS] Registration is closed, only administrators can add users.
 [PASS] Serving the compiled version of the javascript app
 [PASS] All email notifications will be sent.

 Development Tools (optional)

 [PASS] Phpunit is installed
 [PASS] Phpunit version is 3.7.38

  2 error(s) found. Hang in there!

/etc/nginx/conf.d/passbolt.conf

server {
    listen 80;
    server_name passbolt.##############;

    location / {
        rewrite ^(.*) https://$server_name$1 permanent;
    }
}

server {
    listen 443 ssl;
    server_name passbolt.##############;

    root /var/www/html/passbolt/;
    index index.php;

    ssl_certificate /etc/nginx/certs/passbolt.crt;
    ssl_certificate_key /etc/nginx/certs/passbolt.key;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Server details

  • CentOS 7.4.1708
  • MariaDB 5.5.56
  • Nginx 1.12.2
  • PHP 7.0.25

Checklist
[x] I have read intro post: About the Installation Issues category
[x] I have read the tutorials, help and searched for similar issues
[x] I provide relevant information about my server (component names and versions, etc.)
[x] I provide a copy of my logs and healthcheck
[x] I describe the steps I have taken to trouble shoot the problem
[x] I describe the steps on how to reproduce the issue

Hello @ghaberek,

Thanks for your interest in passbolt!
Looking quickly at your nginx conf, I can see that the rewrite rule is not present in the https section, but only in the http section.

I’m pretty sure this location block handles that:

location / {
    try_files $uri $uri/ /index.php?$args;
}

After more poking around, I found the comment on this post that indicates the root block has to point to the app/webroot/ directory, and sure enough that was what I was missing.

root /var/www/html/passbolt/app/webroot/;
#                           ^^^^^^^^^^^^ -- this was missing

Thanks!

You’re right, I answered to quickly.
Thank you for the follow-up.

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.