SuiteCRM 8 Beta - Install Questions

I set up a brand new Ubuntu VM (on esxi) and applied all updates, then hit the download button from here: https://suitecrm.com/suitecrm-8-beta-preview/ and then followed the install instructions. This is a relatively clean install - maybe I missed something somewhere.

I don’t have composer currently installed. I’m being told that I can install it with apt install composer :slight_smile:

I will try that.

Hi @rwebb616,

The package from https://suitecrm.com/suitecrm-8-beta-preview/ is the read to install one. It already includes a vendor folder with all dependencies. So usually you don’t need to run composer install.

However, setting APP_ENV=dev will change symfony to dev mode, which requires having dev dependencies installed. By default the package, only has the prod mode dependencies.
Thats the only reason for needing composer.

Got this when running composer install:

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - jeremykendall/php-domain-parser 4.0.3-alpha requires ext-intl * -> the req                                                                              uested PHP extension intl is missing from your system.
    - jeremykendall/php-domain-parser 4.0.3-alpha requires ext-intl * -> the req                                                                              uested PHP extension intl is missing from your system.
    - Installation request for jeremykendall/php-domain-parser 4.0.3-alpha -> sa                                                                              tisfiable by jeremykendall/php-domain-parser[4.0.3-alpha].

  To enable extensions, verify that they are enabled in your .ini files:
    - /etc/php/7.4/cli/php.ini
    - /etc/php/7.4/cli/conf.d/10-mysqlnd.ini
    - /etc/php/7.4/cli/conf.d/10-opcache.ini
    - /etc/php/7.4/cli/conf.d/10-pdo.ini
    - /etc/php/7.4/cli/conf.d/15-xml.ini
    - /etc/php/7.4/cli/conf.d/20-calendar.ini
    - /etc/php/7.4/cli/conf.d/20-ctype.ini
    - /etc/php/7.4/cli/conf.d/20-curl.ini
    - /etc/php/7.4/cli/conf.d/20-dom.ini
    - /etc/php/7.4/cli/conf.d/20-exif.ini
    - /etc/php/7.4/cli/conf.d/20-ffi.ini
    - /etc/php/7.4/cli/conf.d/20-fileinfo.ini
    - /etc/php/7.4/cli/conf.d/20-ftp.ini
    - /etc/php/7.4/cli/conf.d/20-gd.ini
    - /etc/php/7.4/cli/conf.d/20-gettext.ini
    - /etc/php/7.4/cli/conf.d/20-iconv.ini
    - /etc/php/7.4/cli/conf.d/20-imap.ini
    - /etc/php/7.4/cli/conf.d/20-json.ini
    - /etc/php/7.4/cli/conf.d/20-mbstring.ini
    - /etc/php/7.4/cli/conf.d/20-mysqli.ini
    - /etc/php/7.4/cli/conf.d/20-pdo_mysql.ini
    - /etc/php/7.4/cli/conf.d/20-phar.ini
    - /etc/php/7.4/cli/conf.d/20-posix.ini
    - /etc/php/7.4/cli/conf.d/20-readline.ini
    - /etc/php/7.4/cli/conf.d/20-shmop.ini
    - /etc/php/7.4/cli/conf.d/20-simplexml.ini
    - /etc/php/7.4/cli/conf.d/20-sockets.ini
    - /etc/php/7.4/cli/conf.d/20-sysvmsg.ini
    - /etc/php/7.4/cli/conf.d/20-sysvsem.ini
    - /etc/php/7.4/cli/conf.d/20-sysvshm.ini
    - /etc/php/7.4/cli/conf.d/20-tokenizer.ini
    - /etc/php/7.4/cli/conf.d/20-xmlreader.ini
    - /etc/php/7.4/cli/conf.d/20-xmlwriter.ini
    - /etc/php/7.4/cli/conf.d/20-xsl.ini
    - /etc/php/7.4/cli/conf.d/20-zip.ini
  You can also run `php --ini` inside terminal to see which files are used by PH                                                                              P in CLI mode.

Ok after installing php-intl I got the following (only pasted the last few lines)

Package guzzlehttp/ringphp is abandoned, you should avoid using it. No replacement was suggested.
Package guzzlehttp/streams is abandoned, you should avoid using it. No replacement was suggested.
Package container-interop/container-interop is abandoned, you should avoid using it. Use psr/container instead.
Package fzaninotto/faker is abandoned, you should avoid using it. No replacement was suggested.
Package leafo/scssphp is abandoned, you should avoid using it. Use scssphp/scssphp instead.
Generating optimized autoload files
Deprecation Notice: Class Zend_Validate_Barcode_IntelligentMail located in ./vendor/zf1/zend-validate/library/Zend/Validate/Barcode/Intelligentmail.php does not comply with psr-0 autoloading standard. It will not autoload anymore in Composer v2.0. in /usr/share/php/Composer/Autoload/ClassMapGenerator.php:201
Deprecation Notice: Class Zend_Gdata_Analytics_Goal located in ./vendor/zf1/zend-gdata/library/Zend/Gdata/Analytics/Extension/Goal.php does not comply with psr-0 autoloading standard. It will not autoload anymore in Composer v2.0. in /usr/share/php/Composer/Autoload/ClassMapGenerator.php:201
Deprecation Notice: Class EasyRdf_Serialiser_JsonLd located in ./vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd_real.php does not comply with psr-0 autoloading standard. It will not autoload anymore in Composer v2.0. in /usr/share/php/Composer/Autoload/ClassMapGenerator.php:201
Deprecation Notice: Class EasyRdf_Parser_JsonLd located in ./vendor/easyrdf/easyrdf/lib/EasyRdf/Parser/JsonLdImplementation.php does not comply with psr-0 autoloading standard. It will not autoload anymore in Composer v2.0. in /usr/share/php/Composer/Autoload/ClassMapGenerator.php:201
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
129 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Synchronizing package.json with PHP packages
Don't forget to run npm install --force or yarn install --force to refresh your JavaScript dependencies!
Run composer recipes at any time to see the status of your Symfony recipes.

Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!
!!  In DriverManager.php line 329:
!!
!!    Malformed parameter "url".
!!
!!
!!
Script @auto-scripts was called via post-install-cmd

Hi @rwebb616

Thank you.

Regarding:

How does your DATABASE_URL look like (you can omit the password and other sensitive info) both on .env and .env.local ?

By the way, this url comes from the following:

file: config/packages/doctrine.yaml

parameters:
  # Adds a fallback in case the env is not set.
  env(DATABASE_URL): ''

doctrine:
  dbal:
    url: '%env(DATABASE_URL)%'
   

.env does not have the URL and .env.local is like this:
DATABASE_URL="mysql://root:password@127.0.0.1:3306/suitecrm"

@rwebb616, strange, that url looks ok. Could you try re-setting the permissions for the .env.local (or all files). My best guess at the moment is that its not being able to read .env.local so no url is set…

Assuming your apache group and user are www-data (may need sudo before the following):

find . -type d  -exec chmod 2775 {} \;
find . -type f  -exec chmod 0644 {} \;
chown -R www-data:www-data .

I applied these permissions.

Could there be something up with the database itself? I could drop the db and go through a complete reinstall if you think that would be helpful. That way it would recreate the db.

Hi @rwebb616,

Don’t think this is db related, seems like the config is not being picked for some reason.

Hi @rwebb616,

I think I found the root cause. Please look at the comments on the following threads:

It is the # sign that is not recognized by PHP’s parse_url() function as valid, this issue is not related to Symfony, but to Doctrine DBAL

Think it could be because you have a # (or some special character?) on your password. Seems an issue with Doctrine DBAL. Do you have a # on your password?

During the install process, I think we need to encode the password, when adding to DATABASE_URL .

I’m going to raise this internally

Hi @broms,

Sorry for the delay in replying.

I’m not 100% sure on it yet, though I have a feeling that your issue with not being able to login, may be related with the following thread. Could you, please, try installing a providing a password without any special characters? (I’m guessing that # and % may cause problems).

As mentioned on the thread, I’ve raised this internally .

Hi @clemente.raposo,

I am using IIS and PHP 8, do you have any suggestions to fix performance issue ?

Thanks,
Milan

Yes, I do have a # sign in my password - so should I change the password? It’s the same password on a version 7 install and works so I take it this is because you’re using a different framework for v8?

Rich

Hi @rwebb616,

  1. In order to keep your password you can url encode the #. Try replacing the # with %23 in DATABASE_URL on .env.local.
  • Notes:
    • other special characters may also need to be encoded.
    • I didn’t try it yet, on the github issues I’ve linked before some people where still having issues with %23. So I’m not 100% on this
  1. The alternative is to use a simple password for the moment, until we change the install command to auto encode the password for you (i.e. to do the same that was explained in 1) )

Hi @milanraval,

I’ll need to investigate a bit on this.

I’ve found some stackoverflow threads about performance with windows + php + symfony. Though I still need to have a better look at it. It seems that symfony can be slower on windows. Adding them here in case they help.

1 Like

Yes, this was it - I was able to get a login screen. Thank you for your help!

hey, sorry for delayed reply. I tried removing the previous install, dropping the DB and re-installing everything. Still getting the same error. This time I used the command-line options so I know there’s no typo in the password:

./bin/console suitecrm:app:install -u “admin” -p “test” -U “my-db-user” -P “my-db-password” -H “localhost” -N “suitecrm8beta” -S “http://myurl/suitecrm8” -d “no”

If I understand, I should be able to login with username: admin and password: test. But I’m getting the login credentials incorrect error.

Everything else with the install script seems to have worked–the login page loads at the URL and the database tables were created and there’s a row for my admin user in the users table.

Seeing this in ./logs/prod/prod.log:

[2021-08-04 15:12:16] request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "An exception occurred in driver: could not find driver" at /srv/http/suitecrm8/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 128 {"exception":"[object] (Doctrine\\DBAL\\Exception\\DriverException(code: 0): An exception occurred in driver: could not find driver at /srv/http/suitecrm8/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:128, Doctrine\\DBAL\\Driver\\PDO\\Exception(code: 0): could not find driver at /srv/http/suitecrm8/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php:18, PDOException(code: 0): could not find driver at /srv/http/suitecrm8/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:39)"} []

Any ideas how to resolve? Running php 7.3.29-1, apache 2.4.48-1, mariadb 10.5.11-1

Hi @broms,

Thank you for the feedback. Those logs help a lot.

Could you check if you have the pdo_mysql php extension installed, please? From the logs that seems to be the problem.

You can run php -m to check the extensions.

Extra notes

At first it seemed strange how you were able to run the command and install.
Though it now makes a bit more sense.

The install process calls legacy. Legacy only depends on the mysqli extension.

Now, the login, goes through Suite 8 side, and suite 8 uses symfony and doctrine which required the pdo_mysql extension.

@samus-aran, we should probably add a clear list of the php module dependencies to the Compatibility matrix or to the Installation guide on docs.

Nailed it. Uncommenting the extension=pdo_mysql line in php.ini resolves login problem. Thanks a bunch for helping me get up and running!