Problems installing SuiteCRM 8.2 on Ubuntu - GraphQL 500 error

I’m experiencing the GraphQL installation problem and i’ve ensure that mod_rewrite is enabled and in my virtual host file has “AllowOverride All Order allow, Deny Allow from All”

I am using PHP 8.1 running on Apache2 could PHP compatibility be the problem?

Error as described on this post:

PHP -v

PHP 8.1.2-1ubuntu2.6 (cli) (built: Sep 15 2022 11:30:49) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.6, Copyright (c), by Zend Technologies

Confirmed rewrite is enabled in terminal

command: sudo a2enmod rewrite
response: Module rewrite already enabled

.conf file located in /etc/apache2/sites-available/mydomain.com.conf

<VirtualHost *:80>
  ServerName crm.mydomain.com
  DocumentRoot /var/www/html/suitecrm/public

  ErrorLog ${APACHE_LOG_DIR}/suitecrm_error.log
  CustomLog ${APACHE_LOG_DIR}/suitecrm_access.log combined

  <Directory /var/www/suitecrm/public>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,Deny
    Allow from All
  </Directory>
</VirtualHost>

.htaccess file located in /var/www/html/suitecrm/public *Only the mod_rewrite.c section

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^index.php.*$ - [L,NC]

    # Determine the RewriteBase automatically and set it as environment variable.
    # If you are using Apache aliases to do mass virtual hosting or installed the
    # project in a subdirectory, the base path will be prepended to allow proper
    # resolution of the index.php file and to redirect to the correct URI. It will
    # work in environments without path prefix as well, providing a safe, one-size
    # fits all solution. But as you do not need it in this case, you can comment
    # the following 2 lines to eliminate the overhead.
    RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
    RewriteRule .* - [E=BASE:%1]

    # Sets the HTTP_AUTHORIZATION header removed by Apache
    RewriteCond %{HTTP:Authorization} .+
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]

    # Redirect to URI without front controller to prevent duplicate content
    # (with and without `/index.php`). Only do this redirect on the initial
    # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
    # endless redirect loop (request -> rewrite to front controller ->
    # redirect -> request -> ...).
    # So in case you get a "too many redirects" error or you always get redirected
    # to the start page because your Apache does not expose the REDIRECT_STATUS
    # environment variable, you have 2 choices:
    # - disable this feature by commenting the following 2 lines or
    # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
    #   following RewriteCond (best solution)
    RewriteCond %{ENV:REDIRECT_STATUS} =""
    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

    # If the requested filename exists, simply serve it.
    # We only want to let Apache serve files and not directories.
    # Rewrite all other queries to the front controller.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

You really should not attempt to run SuiteCRM with a version of PHP that is not supported, it just won’t work well.

I switched the version on the server to 8.0, same issue.

php -v
-------------
PHP 8.0.25 (cli) (built: Oct 28 2022 18:03:14) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.25, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.25, Copyright (c), by Zend Technologies

php -c /etc/php/apache2/php.ini -v
-------------
PHP 8.0.25 (cli) (built: Oct 28 2022 18:03:14) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.25, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.25, Copyright (c), by Zend Technologies

sudo update-alternatives --config php
-------------
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path                  Priority   Status
------------------------------------------------------------
  0            /usr/bin/php.default   100       auto mode
  1            /usr/bin/php.default   100       manual mode
* 2            /usr/bin/php8.0        80        manual mode
  3            /usr/bin/php8.1        81        manual mode

Press <enter> to keep the current choice[*], or type selection number:

Ok…

You need to track down what the 500 error is, on the server side.

I’d start by checking php_errors.log and suitecrm.log

In the suitecrm_error.log file I see many of this error:

<ress the notice in /var/www/html/suitecrm/vendor/symfony/http-foundation/Session/Session.php on line 141', referer: http://mydomain.com/index.php

In the /var/log/apache2/error.log

AH01071: Got error 'PHP message: PHP Deprecated:  Return type of Symfony\\Component\\>

I ended up recreating a fresh VM with Ubuntu 20.04 and re-installing a LAMP stack and instead of going with PHP8.0 I installed 7.4 directly and it went through the installation fine.

If anyone stumbles upon this thread and you have similar issue I recommend (at the time of writing this) just go with PHP 7.4 from a clean install of Ubuntu.

This guide was very useful. *NOTE the PHP7.4 package was not directly installable on Ubuntu20.04 you have to add the repository see the 2nd link for that.

Installation Guide:

Add PHP7.4 repository, see “Matigo’s answer”