© 2015 X2Engine Inc.

Difference between revisions of "Known Issues"

From X2Engine
Jump to: navigation, search
(Troubleshooting)
 
(33 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[Category:Support]]
 
[[Category:Support]]
This page does <strong>not</strong> cover bugs in individual releases. Rather, it is for pre-installation errors and problems that both arise under very specific circumstances and cannot be fixed by updating to the latest version (due to how they either prevent updating or cause fatal errors, or because updates cannot fix the issue).
 
  
'''If you saw error messages about missing system requirements during installation''' and disregarded them, first refer to [[Installation#Installing Without All Requirements: What Won't Work|Installing Without All Requirements: What Won't Work]]
+
The following is a list of problems that both arise under very specific circumstances and cannot be fixed by updating to the latest version (due to how they either prevent updating or cause fatal errors, or because updates cannot fix the issue).
 
 
This page is a work in progress. As new common/recurring issues are encountered, they will be addressed here.  
 
 
 
= Troubleshooting =
 
  
 
{|class="wikitable" align="left"
 
{|class="wikitable" align="left"
Line 13: Line 8:
 
! scope="col" | Affected Instances
 
! scope="col" | Affected Instances
 
! scope="col" | How to Fix
 
! scope="col" | How to Fix
 +
|-
 +
! scope="row" | Failed to update with "ResponseUtil.php: No such file or directory" before 3.7.5
 +
| Instances between versions 3.0.1 and 3.7.5
 +
| Modify protected/components/UpdaterBehavior.php, and add the value "components/util/ResponseUtil.php" to the array $updaterFiles and proceed to update:
 +
<syntaxhighlight lang="php">
 +
public $updaterFiles = array(
 +
    // ...
 +
    "components/util/ResponseUtil.php",
 +
);
 +
</syntaxhighlight>
 +
|-
 +
! scope="row" | Primary administrator user has lost permissions
 +
| After updating to 4.0.1, having a username that isn't "admin"
 +
| Run the following database command (SQL) on X2Engine's database, '''REPLACING <tt>{user}</tt> WITH THE ADMINISTRATOR'S USERNAME''':
 +
<syntaxhighlight lang="sql">
 +
UPDATE `x2_auth_item` SET `bizrule`='return Yii::app()->user->name === "{user}";' WHERE `name`='admin';
 +
DELETE FROM `x2_auth_cache` WHERE 1;
 +
</syntaxhighlight>
 +
Once administrative access has been restored, update to 4.0.2 or later. ''Alternatively, you can use the [[Software_Updates_and_Upgrades#Using_the_Command_Line_Updater|command line update method]].''
 +
|-
 +
! scope="row" | "failed to copy from tmp" error message on update page
 +
| Versions 3.5.5, and in some cases, from 3.5.6 to 3.7.5
 +
| There was a bug in 3.5.5 caused this particular error, but it was later fixed. If you are on 3.5.5, you can fix this by [[Software_Updates_and_Upgrades#Refreshing_and_Updating_the_Updater_Utility|updating the updater utility to the latest version.]] In all other versions, the only two legitimate causes of this error that could be found were:
 +
* The list of updater dependency files to download is actually empty (this should almost never happen when the updater utility refreshes)
 +
* (In X2Engine Professional Edition): the installation's number of users exceeds the amount of users for which the license is authorized. This causes the server to return something other than the list of file digests, and the updater interprets it as being empty.
 +
In both of these cases, the "tmp" folder simply does not get created due to the file list being empty (which was problematic). In the case that you are using X2Engine Open Source Edition, or the number of users does not exceed the number that your license is authorized for, you can attempt to circumvent this by creating the folder manually. In both cases, you can get past this issue if you have access to the CRM's files.
 +
|-
 +
! scope="row" | Cannot update, and requirements check script passes
 +
| Installed at or updated to version 3.5.5
 +
| [[Software_Updates_and_Upgrades#Refreshing_and_Updating_the_Updater_Utility|Update the updater utility to the latest version.]]
 +
|-
 +
! scope="row" | Prompt to update doesn't go away after updating
 +
| X2Engine versions before 2.1 (check for the version number being the same as before the update)
 +
| '''After updating,''' edit the file <tt>protected/config/X2Config.php</tt>. For the <tt>$version</tt> variable, put the current version between the pair of single quotes. For example, for version x.y.z, it should look like this: <syntaxhighlight lang="php">$version = 'x.y.z';</syntaxhighlight>
 
|-
 
|-
 
! scope="row" | Cannot log in after update
 
! scope="row" | Cannot log in after update
| X2CRM versions before 2.0, after updating to a version after 2.0
+
| X2Engine versions before 2.0, after updating to a version after 2.0
 
| Empty the x2_sessions table (delete all records)
 
| Empty the x2_sessions table (delete all records)
 
<syntaxhighlight lang="sql">
 
<syntaxhighlight lang="sql">
Line 35: Line 64:
 
All versions up to 2.2.1 on some servers
 
All versions up to 2.2.1 on some servers
 
|
 
|
Replace all instances of "mysql_escape_string" with "addslashes" in initialize.php, or simply remove those function calls. Note that if you perform the latter action, you must ensure that the values you put in the "Application Name" and "Administrator Email" fields of the installation form do not contain any apostrophes (otherwise, the resulting installation will be broken).
+
'''Install a newer version of X2Engine''' (recommended) or replace all instances of "mysql_escape_string" with "addslashes" in initialize.php, or simply remove those function calls. Note that if you perform the latter action, you must ensure that the values you put in the "Application Name" and "Administrator Email" fields of the installation form do not contain any apostrophes (otherwise, the resulting installation will be broken).
 
|-
 
|-
 
! scope="row" | "No input file specified"
 
! scope="row" | "No input file specified"
Line 49: Line 78:
 
Installed at 1.6.1 or earlier and updated to a version in the range 1.6.5 - 2.0
 
Installed at 1.6.1 or earlier and updated to a version in the range 1.6.5 - 2.0
 
|
 
|
* Enable fopen_allow_url in the hosting environment (updates themselves won't work without this option; it's the crux of the remote update process)
 
 
* Set value of the column <tt>unique_id</tt> in table <tt>x2_admin</tt> to "none", i.e. <syntaxhighlight lang="sql">UPDATE `x2_admin` SET `unique_id`='none'</syntaxhighlight> Then, go to "Updater Settings" ("General Settings" in versions earlier than 2.0), ensure "Enable Software Update Notifications" is checked, and submit the form.
 
* Set value of the column <tt>unique_id</tt> in table <tt>x2_admin</tt> to "none", i.e. <syntaxhighlight lang="sql">UPDATE `x2_admin` SET `unique_id`='none'</syntaxhighlight> Then, go to "Updater Settings" ("General Settings" in versions earlier than 2.0), ensure "Enable Software Update Notifications" is checked, and submit the form.
* Run the update manually
+
* Run the update manually if all else fails
 
|-
 
|-
 
! scope="row" | Cannot view or create quotes
 
! scope="row" | Cannot view or create quotes
Line 71: Line 99:
 
         ("Quote", "existingProducts", "Existing Products", 0,  0, "varchar", 0,  0,  NULL,  0, "", 1)
 
         ("Quote", "existingProducts", "Existing Products", 0,  0, "varchar", 0,  0,  NULL,  0, "", 1)
 
</syntaxhighlight>
 
</syntaxhighlight>
|-
 
! scope="row" | Version number incorrect or empty after updating
 
| X2CRM versions before 2.1
 
| '''After updating,''' edit the file <tt>protected/config/X2Config.php</tt>. For the <tt>$version</tt> variable, put the current version between the pair of single quotes. For example, for version x.y.z, it should look like this: <syntaxhighlight lang="php">$version = 'x.y.z';</syntaxhighlight>
 
 
|-
 
|-
 
|}
 
|}
 
= Running Updates Manually =
 
In some cases, it may be desirable to bypass the update notifications and go straight to the updater to check if there is a new version available, because of update notifications disabled or an improperly set unique_id in the x2_admin table. To run an update or check for an update manually, log in as the admin user and in the browser's address bar, replace "index.php/site/whatsNew" with "index.php/admin/updater", and hit enter to run the action.
 
 
<strong>Note:</strong> in versions 2.2 and later, it is possible to go directly to the updater through a link in the admin console under the "System Settings" section.
 

Latest revision as of 01:30, 5 December 2014


The following is a list of problems that both arise under very specific circumstances and cannot be fixed by updating to the latest version (due to how they either prevent updating or cause fatal errors, or because updates cannot fix the issue).

Description Affected Instances How to Fix
Failed to update with "ResponseUtil.php: No such file or directory" before 3.7.5 Instances between versions 3.0.1 and 3.7.5 Modify protected/components/UpdaterBehavior.php, and add the value "components/util/ResponseUtil.php" to the array $updaterFiles and proceed to update:
public $updaterFiles = array(
    // ...
    "components/util/ResponseUtil.php",
);
Primary administrator user has lost permissions After updating to 4.0.1, having a username that isn't "admin" Run the following database command (SQL) on X2Engine's database, REPLACING {user} WITH THE ADMINISTRATOR'S USERNAME:
UPDATE `x2_auth_item` SET `bizrule`='return Yii::app()->user->name === "{user}";' WHERE `name`='admin';
DELETE FROM `x2_auth_cache` WHERE 1;

Once administrative access has been restored, update to 4.0.2 or later. Alternatively, you can use the command line update method.

"failed to copy from tmp" error message on update page Versions 3.5.5, and in some cases, from 3.5.6 to 3.7.5 There was a bug in 3.5.5 caused this particular error, but it was later fixed. If you are on 3.5.5, you can fix this by updating the updater utility to the latest version. In all other versions, the only two legitimate causes of this error that could be found were:
  • The list of updater dependency files to download is actually empty (this should almost never happen when the updater utility refreshes)
  • (In X2Engine Professional Edition): the installation's number of users exceeds the amount of users for which the license is authorized. This causes the server to return something other than the list of file digests, and the updater interprets it as being empty.

In both of these cases, the "tmp" folder simply does not get created due to the file list being empty (which was problematic). In the case that you are using X2Engine Open Source Edition, or the number of users does not exceed the number that your license is authorized for, you can attempt to circumvent this by creating the folder manually. In both cases, you can get past this issue if you have access to the CRM's files.

Cannot update, and requirements check script passes Installed at or updated to version 3.5.5 Update the updater utility to the latest version.
Prompt to update doesn't go away after updating X2Engine versions before 2.1 (check for the version number being the same as before the update) After updating, edit the file protected/config/X2Config.php. For the $version variable, put the current version between the pair of single quotes. For example, for version x.y.z, it should look like this:
$version = 'x.y.z';
Cannot log in after update X2Engine versions before 2.0, after updating to a version after 2.0 Empty the x2_sessions table (delete all records)
DELETE FROM `x2_sessions`;
Invalid path in "protected/runtime/..."
  • PHP built without posix library
  • Windows-based servers

This is caused by installing with a directory ownership mismatch that wasn't caught and reported in the requirements check. In some PHP builds, the necessary POSIX functions for running this check are unavailable due to one of the following reasons:

  • The --disable-posix flag is enabled and the POSIX library hasn't been separately installed
  • The server's operating system is Windows

To see if this is the case, upload requirements.php to your server again and search for "posix" in the phpinfo() output.

Installation error: deprecated function "mysql_escape_string"

All versions up to 2.2.1 on some servers

Install a newer version of X2Engine (recommended) or replace all instances of "mysql_escape_string" with "addslashes" in initialize.php, or simply remove those function calls. Note that if you perform the latter action, you must ensure that the values you put in the "Application Name" and "Administrator Email" fields of the installation form do not contain any apostrophes (otherwise, the resulting installation will be broken).

"No input file specified"

All versions, on GoDaddy hosting

All web applications featuring human-friendly URLs (i.e. Joomla!, Drupal, Wordpress) will have this issue on GoDaddy. The error is caused by the URL rewriting engine being disabled in GoDaddy's hosting environment. See the following articles on how to rectify the issue using .htaccess overrides:

Update notifications do not work, cannot enable them

Installed at 1.6.1 or earlier and updated to a version in the range 1.6.5 - 2.0

  • Set value of the column unique_id in table x2_admin to "none", i.e.
    UPDATE `x2_admin` SET `unique_id`='none'
    
    Then, go to "Updater Settings" ("General Settings" in versions earlier than 2.0), ensure "Enable Software Update Notifications" is checked, and submit the form.
  • Run the update manually if all else fails
Cannot view or create quotes

Installed at 1.6.1 or earlier and updated to a version in the range 1.6.5 - 1.6.6

Run the following SQL:

Versions earlier than 2.0:

INSERT INTO x2_fields (modelName, fieldName,  attributeLabel,  modified, custom, type,  required, readOnly, linkType, searchable, relevance) 
 VALUES ("Quote", "products",  "Products",  0,  0, "varchar", 0,  0,  NULL,  0, ""), 
        ("Quote", "existingProducts", "Existing Products", 0,  0, "varchar", 0,  0,  NULL,  0, "")

Versions 2.0 and later:

INSERT INTO x2_fields (modelName, fieldName,  attributeLabel,  modified, custom, type,  required, readOnly, linkType, searchable, relevance,isVirtual) 
 VALUES ("Quote", "products",  "Products",  0,  0, "varchar", 0,  0,  NULL,  0, "", 1),
        ("Quote", "existingProducts", "Existing Products", 0,  0, "varchar", 0,  0,  NULL,  0, "", 1)