×


Plesk error PHP has encountered an Access Violation - Fix it now

Are you facing the error, PHP has encountered an Access Violation? 

This guide is for you.


PHP has encountered an Access Violation error might be as a result of Database inconsistency which can occur if you move a database, table, application or some other object by using operating system commands rather than the supported Ingres utilities.

Here, A database file can become corrupted from hardware or software failures of various kinds.

Basically, it is regarded as a critical system issue, Access violation error may cause total system corruption or even loss of data.

Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to resolve related PHP queries.

In this context, we shall look into how to fix the error, PHP has encountered an Access Violation.


Nature of PHP has encountered an Access Violation 

Recently, one of our customers came across an error message in the Windows server with the Plesk control panel:

PHP has encountered an Access Violation at xxxxxxxx

The major causes of this error include:

1. Several DLL files in different folders with different versions.

2. If the server runs Windows, this probably relates to a memory leak in PHP or a PHP module.

3. Due to Eaccelerator extension from PHP.

4. Incorrect permissions of the temp folder.

5. ZendOptimizer does not work well with PHP.

6. Due to limits set in the application pool.


How to solve the error, PHP has encountered an Access Violation?

To begin, we copy the file libmysql.dll from C:\Program Files (x86)\SWsoft\Plesk\Additional\PleskPHP5 to C:\WINDOWS\system32.

Then we correct the PATH in environment variables.

We need to put the PHP path (C:\Php) at the beginning of the environment variable “Path”.

The incorrect one is as below:

Path = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Php;

On the other hand, the correct one looks like this:

Path = C:\Php;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Intel\DMIX;

Then we can see that there is something that does not allow to access the resources.

It might be the maximum reach of the memory limit, might be the maximum limit of Inodes, or any bad piece of code which holds the memory.

In addition, it can occur due to the limits set in the application pool.

Moving ahead, we remove the eaccelerator extension from PHP.

This will solve the problem. However, it may add to the system’s burden because Eaccelerator is basically something that saves system resources.

We can find php.ini, usually in C:/PHP/php.ini or C:/winnt/php.ini or C:/Windows/php.ini.

Make sure that there are read, write and execute permissions for the folder C:/winnt/temp or C:/Windows/temp.

In the case of ZendOptimizer, we need to try another version.


[Need urgent help with PHP related errors resolution? We can help you. ]


Conclusion

This article covers how to fix PHP has encountered an Access Violation which occurs in the Windows server with the Plesk control panel. 

Do a copy libmysql.dll from C:\Program Files (x86)\SWsoft\Plesk\Additional\PleskPHP5 to C:\WINDOWS\system32

Wait for few minutes and it should fix the issue.


To fix PHP has encountered an Access Violation at XXXXX in Plesk:

1. Connect to the server via SSH.

2. Create a backup of the psa database:

plesk db dump psa > /root/psa_backup.sql

3. Download the attached script:

$ wget https://plesk.zendesk.com/hc/article_attachments/115001860533/script_kb213376309

4. Make the script executable:

$ chmod +x script_kb213376309

5. Launch the script for the affected subscription:

Note: change the "example.com" website in the command below to the correct one.

$ ./script_kb213376309 example.com

6. If an error like below appears:

ERROR 1062 (23000) at line 5: Duplicate entry '123-789' for key 'PRIMARY' exit status 1

find the duplicate record in the database:

Note: change the "123" ipCollectionId in the command below to the correct one based on the error message regarding the duplicate entry.

plesk db "select * from IpAddressesCollections where ipCollectionId=123;"

7. Remove the duplicate record from the database:

Note: change the "123" ipCollectionId in the command below to the correct one based on the error message regarding the duplicate entry

Change the "456" ipAddressId in the command below to the correct one based on the output from the previous step.

$ plesk db "delete from IpAddressesCollections where ipCollectionId=123 and ipAddressId=456;"