Move of SuiteCRM - causes white screen

I moved my SuiteCRM installation recently.

I moved it not by choice, but by necessity. I was unable to export, as only the files were retreivable, as nothing else worked.

I have back up files for everything, and moved the DB and the directory.

Now, all get is a white screen. No log in, no images, no sign of t even being a website.

Ideas one where I should start looking?

If you are going to say look at a log file, let me know which one. I know some linux, but it is a work in progress:)

SuiteCRM 4.9.x
Debian 9.x

Thanks

Joseph

First four things I recommend:

  1. reset file system ownerhip and permissions correctly in the new instance
  2. edit config.php and update the variables: site_url and host_name with the new correct values
  3. edit .htaccess and updtae references to the old installation path with the new one
  4. make sure that config.php has the correct settings for the database (user, password, type, host, etc)

Then clear browser cache and try again.

Hello,
Thanks for the ideas.

I moved the system to a copy of the orignal. So, all settings are fine.

I had to change the permissions. These are now updated.

But, when I looked in the.htaccess file, I founds no references to an installation path. I only found this in the config.php file. If it is supposed to be there, it is not.

I tried clearing the cache on my browser, and I still get the white screen.

I tried rebooting the server. I still get the white screen.

Thank for any ideas.

Joseph

  1. .htaccess
    Here is a sample for a test installation:
# BEGIN SUGARCRM RESTRICTIONS
RedirectMatch 403 (?i).*\.log$
RedirectMatch 403 (?i)/+not_imported_.*\.txt
RedirectMatch 403 (?i)/+(soap|cache|xtemplate|data|examples|include|log4php|metadata|modules)/+.*\.(php|tpl)
RedirectMatch 403 (?i)/+emailmandelivery\.php
RedirectMatch 403 (?i)/+upload
RedirectMatch 403 (?i)/+custom/+blowfish
RedirectMatch 403 (?i)/+cache/+diagnostic
RedirectMatch 403 (?i)/+files\.md5$
# END SUGARCRM RESTRICTIONS
<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /SuiteCRM_Tests/SuiteCRM-7.10.4
    RewriteRule ^cache/jsLanguage/(.._..).js$ index.php?entryPoint=jslang&modulename=app_strings&lang=$1 [L,QSA]
    RewriteRule ^cache/jsLanguage/(\w*)/(.._..).js$ index.php?entryPoint=jslang&modulename=$1&lang=$2 [L,QSA]
    RewriteRule ^api/(.*?)$ lib/SuiteCRM/API/public/index.php/$1 [L]
    RewriteRule ^api/(.*)$ - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<FilesMatch "\.(jpg|png|gif|js|css|ico)$">
        <IfModule mod_headers.c>
                Header set ETag ""
                Header set Cache-Control "max-age=2592000"
                Header set Expires "01 Jan 2112 00:00:00 GMT"
        </IfModule>
</FilesMatch>
<IfModule mod_expires.c>
        ExpiresByType text/css "access plus 1 month"
        ExpiresByType text/javascript "access plus 1 month"
        ExpiresByType application/x-javascript "access plus 1 month"
        ExpiresByType image/gif "access plus 1 month"
        ExpiresByType image/jpg "access plus 1 month"
        ExpiresByType image/png "access plus 1 month"
</IfModule>

As you can see there is a line referencing the folder in which SuiteCRM is installed:

 RewriteBase /SuiteCRM_Tests/SuiteCRM-7.10.4

The base is the webserver installation in this case.

If you have no reference to the SuiteCRM installation folder then there must be something wrong in your installation.

  1. config.php - site_url
    in my test installation it is set to:
'site_url' => 'http://localhost/SuiteCRM_Tests/SuiteCRM-7.10.4',

As you can see this refers to the folder where SuiteCRM is installed.- If you moved it your system will not work. You have to update the value with the new correct ones.

  1. config.php - host_name

In my test installaion this is:

  'host_name' => 'localhost',

In theory this should not have changed, but you have to make sure that you have the correct values.

  1. config.php - DB information

In my test example I have:

  'dbconfig' => 
  array (
    'db_host_name' => 'localhost',
    'db_host_instance' => 'SQLEXPRESS',
    'db_user_name' => 'root',
    'db_password' => '',
    'db_name' => 'suitecrm7104',
    'db_type' => 'mysql',
    'db_port' => '',
    'db_manager' => 'MysqliManager',
  ),

As you can see there are some values that may be different in your new installation: db_host_name, db_name, db_user_name, db_password. However these shouldn’t cause a 500 error.

  1. Permissions
    How precisely did you change them?
    Did you verify that owner and group are correct?
    A wrong value may cause a 500 error.

  2. You say:

Can you be explicit? What did you do PRECISELY? Your sentence is too vague to understand what is happening.

  1. Error logs
    Please check:

a. SuitecRM error log

(it is in the root folder of SuiteCRM) and report any Fatal error (ignore warnings and notices) ath the time in which you go a withe screen. Probably you will not find anything relevant here.

b. Browser javascript console

Please report any Fatal error (ignore warnings and notices) ath the time in which you go a withe screen. Probably you will not find anything relevant here.

c. PHP/Apache error log

(the name and the location of this file depends on yur system) and report any Fatal error (ignore warnings and notices) ath the time in which you go a withe screen. Probably you will find something relevant here.

Hello,

I changed my permissions by using the following:
sudo chmod -R 755 .
sudo chmod -R 775 cache custom modules themes data upload config_override.php

.htaccess
I did find a reference, but I thought I would see the website n questions. I did not. I see:

RewriteBase /crm

config/php

‘site_url’ => ‘http://mywebsite.com/crm’,

‘host_name’ => ‘mywebsite.com’,

YOu asked to be precise on how ti moved them and confirmed the details.

I used ispconfig on th eodl and the new server.

I made sure that the user was the same. The database remained the same (I copied over the DB from the original server). I copied the entire folder of the CRM form the original folder. The databse user was the same. The passwords are the same, etc…

AS for the error log:

Sun Jun 10 10:40:40 2018 [2800][-none-][FATAL] Unable to retrieve system settings Query Failed: SELECT category, name, value FROM config: MySQL error 1932: Table ‘c2ecocrm.config’ doesn’t exist in engine

So, there is an error with the database. But, the database was copied over, permisisons were confirmed. They are owned by mysql.

Other databases from the old site moved with no issues(wordpres websites, for example). So, I am not sure why the one for my CRM has an error.

Thanks

Joseph

can you try to access your db with phpMyAdmin and check if there is a table by the name ‘c2ecocrm.config’
(in theory it should be called ‘config’)

How did you backup and then reload your database?

Are you sure that user/pwd are valid in the new system? Normally when you backup a database you are not backing up user and password, which have to be set separetely I believe.

Hello,

The config table is there.

But, in the columnmarker collation, it says: “in use”

In fact, tables say in use for this column.

You asked how it was back up: They were backed up daily by tarring al DBs in the mysql folder and placing this file on another server.

When you compae file sizes, they are the same.

I tried using the DB formthe backup, and also by just copying it off the original server. They files ar there, but the servics of the server no longer works.

There are other DBs that do not have this issue. All wordpress DBs work fine.

Thanks

Joseph

If I understand well the backup was made by doing a copy of the folders and not by exporting the db.

Probably this is the reason it is not working. Some time ago I did a brute copy of a database to find out that it wasn’t that simple and that to get it to work there is a lot more to do (and possibly still fail!).

If you still have access to the old system you should do a normal backup. Possibly from within phpMyAdmin or, if you have shell access with a command like:

mysqldump --add-drop-table --host={db_host} --port='{port}' --user='{db_username}' --password="{db_password}" }{db_name} > {filename}

Where you have to substitute what’s in curly brackets with the required values (don’t keep the curly brackets)

Additionally, you may tar everyting with:

zip -9 -rq {zipfname} "{dump_fname}"

Hello,

we no longer have access to phpmyadmin. apache and php do not work.

since myql died, I never ried mysqldump.

I typed the command, and it seems fucntional.

Now, I have never done this, si IU need guidance:

Can you explain the ocmand that you gave me?

mysqldump --add-drop-table --host={db_host} --port=’{port}’ --user=’{db_username}’ --password="{db_password}" }{db_name} > {filename}

add-drop tabel - what is this doing?

host - I list local host??
port - ??? whcih port do you use for this??
db user name and password, this is fine

db name - this is the db we want to make a dump of?
file name - this is the exported name? Does it need an extension?

If this works, can I use phpmyadmin on the new system to import this file?

Thanks

For a detailed explanation of mysqldump you should look at the MySQL documentation or search the web. Here is a site that explains it:

https://www.computerhope.com/unix/mysqldum.htm

Which file? You say that you have no access to the database?
I think you can import it with phpMyAdmin.

I searched the web and found some instructions on how to restore a db from a copy of the physical files.
Read everything here and follow instructions. Maybe it works. Take a copy of everything and try on a copy before until you have a fully working solution.

https://stackoverflow.com/questions/484750/restoring-mysql-database-from-physical-files

[quote=“amariussi” post=67576]

Please do not try this. As you seem not too experienced with databases, you can destroy every database you have with this, as you may overwrite global files and with them maybe your wordpress database.
Better go the way with mysqldump.
If you have to go the other way, make a complete new database server, copy only the suitecrm database files over as described in the link, and then do a mysqldump from this database. Then you can import that dump in your production server.
Before you go on: Backup, backup, backup :wink:

@gunnicom
Why do you suggest not to do it.

If you read what I wrote I am suggesting take a full BACKUP (which can be restored by brute force copy) and to try on a COPY of this backup so that nothing can be destroyed (while keeping both the backup and the current (non-working) installation intact, and to proceed to real life only when comfortable.

Personally I have done it once (I had no other option) and managed to obtain a non fully working system which allowed me to export the tables only one by one and from the export I managed to rebuild the DB on a new installation. It was long but effective. Everything was done on a copy and in the real life system I only imported the tables (after trying on an exact image of everything of course!)

I agree with you that doing this is very dangerous but it seems to be the only option available since the old system is no longer accessible. Unless they have exported properly the DB.

Exactly that is why i advise to try it with mysqldump first. Of course if there is no other option you can do so, but you have to be very careful and knowing what you do.
And as joehoagan seems not so experienced i just wanted to make sure that he will be very careful, to not make more damage to other important systems.

Hello,

Thanks for your ideas.

As you rightfully stated, I am still learning, and mysql is totally new to me, except for backing a back up via phpmyadmin:)

Anything being done will be done in a copy of the server (I use vmware). If it fails, I erase the copy and try again:)

On top of that, I have a couple of people who are experienced linux people, and will be looking at it. I will share what you have generously shared with me, and they will maybe be one or two steps closer to the solution with your assistance.

Thanks

Joseph

sudo chown -R www-data:www-data …/installdirectory/ <-- or while in the install directory sudo chown -R www-data:www-data .

dont forget the period, it specifies current directory

www-data (on Linux anyways) has to own the installation directory chmod alone just sets directory permissions

MySqlDump is far superior to phpmyadmin

Also you can add scheduled dumps to the cron so you always have a backup.

I have gotten Suite working before by using copied folders but unfortunately don’t remember how I did it. I want to say I didn’t copy the ibdata folders…maybe, but cant be sure. Information Schema and Mysql DBs must be present.