Jump to content
RAC

PHP Startup: Unable to load dynamic library

Recommended Posts

Hello all

 

Running bs Edge early 2017,

 

I have the following error in public_html/shop/error_log :

[09-Jun-2019 08:30:10 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/timezonedb.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/timezonedb.so: cannot open shared object file: No such file or directory in Unknown on line 0
[09-Jun-2019 08:30:10 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/pdo.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/pdo.so: undefined symbol: zval_property_ctor in Unknown on line 0
[09-Jun-2019 08:30:10 UTC] PHP Warning:  PHP Startup: pdo_sqlite: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20151012
These options need to match
 in Unknown on line 0

 

This error started out-of-the-blue on Sunday morning, presently the error log stands at 51MB !

 

I have made no changes to my website for around a month and my host assures me that no updates or installations have been installed on my website.

 

Any clues as to what the problem may be?

 

Thanks Shaun

Share this post


Link to post
Share on other sites

Go back to your host as some path has been changed in the php.ini  or server for sure, If you do not have access then it must be your host.

 


 

Share this post


Link to post
Share on other sites

are you on cpanel or WHM?

maybe your ini got hosed from possible update for exim vulnerability

check for the path /usr/local/lib/php/extensions/no-debug-non-zts-20090626

if it does not exist then do a grep or locate for no-debug-non-zts-20090626

the system is looking for your extensions at path /usr/local/lib/php/extensions/no-debug-non-zts-20090626

if the path is different then the the file needs to be updated to the correct path


No longer giving free advice. Please place deposit in meter slot provided.  Individual: [=] SME: [==] Corporation: [===]
If deposit does not fit one of the slots provided then you are asking too much! :P


Support The Project
Documentation/Knowledgebase/Discussions
 

Share this post


Link to post
Share on other sites

Hello Zahid   @JcMagpie     

I have returned to my host yet again, they still insist no changes have been made.

 

Hello Steve   @241    

I access cPanel through WHM.

I have looked for /user/local/lib/extensions/no-debug-non-zts-20090626 and can find nothing.

I am sorry I do not understand how to do a grep search, could you explain in simple terms please.

How do I start this search? What text do I use? Where do I type this?

 

Regards Shaun

Share this post


Link to post
Share on other sites

You don't say what php version you are running? you may find that your host has upgraded your php version. Check the extentions set in your php see image and red marks,  Yourr php.ini  is either corrupted in which case replace it from a backup or the php default extentions have changed either by you or by your host.

You need to check your php.ini file you look to be missing this line.

extension=timezonedb.so

extension=pdo.so

image.thumb.png.bd7aa65cf3ead705393e4b6ba1d0411f.png

 


 

Share this post


Link to post
Share on other sites

do you have ssh access as grep is used from the command console as is locate

you may have an empty space after the = on one of the lines for extensions in the ini file.

a line like

extension=the space

there should be no space after the =

a space after the = will cause the messages you are seeing in the logs

There is also a know issue with using the editor in that it sometimes enters a line twice


No longer giving free advice. Please place deposit in meter slot provided.  Individual: [=] SME: [==] Corporation: [===]
If deposit does not fit one of the slots provided then you are asking too much! :P


Support The Project
Documentation/Knowledgebase/Discussions
 

Share this post


Link to post
Share on other sites

you could do

locate no-debug-non-zts-20090626

that would give you all paths to no-debug-non-zts-20090626

or you could use egrep on the ini file

egrep '(extension= | timezonedb.so| pdo.so)' path to your ini file|more

that would give you any lines in your ini file that have a space after the =

it would also give you any lines containing timezonedb or pdo.so

the |more at the end just help show a page of data at a time making easier reading otherwise if there is a lot of data it will scroll to the end


No longer giving free advice. Please place deposit in meter slot provided.  Individual: [=] SME: [==] Corporation: [===]
If deposit does not fit one of the slots provided then you are asking too much! :P


Support The Project
Documentation/Knowledgebase/Discussions
 

Share this post


Link to post
Share on other sites

My experience with hosting is that often one hand (customer support) doesn't know what the other hand (server changes) has been doing. A host's protestations of innocence should always be taken with more than a few grains of salt. They probably changed something, and it's broken your site. If they didn't, and you didn't, then you've been hacked (although the symptoms are not typical for a hack). Anyway, list all your files and do a quick look-see for any files recently changed that you can't account for. Sometimes a host will patrol customer files looking for vulnerabilities to fix, and break something in the process (happens all the time).

As for running "grep" (on a Linux server), or "findstr" on a Windows server, if you don't have SSH (command line access), you often have "cron job" access. You can use that for running a command, but be sure to remove the job once run, or it will keep running over and over. I can't give you specifics for the grep command, as flags vary by implementation (particularly how to recursively search all subdirectories and their files).

Share this post


Link to post
Share on other sites

cron jobs have problems to in fact if the errors appear at consistent time spans this may be indicative of a bad cron job


No longer giving free advice. Please place deposit in meter slot provided.  Individual: [=] SME: [==] Corporation: [===]
If deposit does not fit one of the slots provided then you are asking too much! :P


Support The Project
Documentation/Knowledgebase/Discussions
 

Share this post


Link to post
Share on other sites

Hello all

 

@JcMagpie I am running php 7, I checked the red highlighted items and timezonedb was not ticked, so I have now changed this.

 

I checked the php.ini file, and surprise surprise my old file had been replaced by a new file, on Sunday, when the error messages started.

 

So I compared the two files and found one change :

Current :          #extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626"

Old :                extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626"

 

When I changed the file back my website went off-line, hence the reason they changed the file.

 What update has my host done to cause this problem? So I can go back to them.

 Or is there another way?

 

 

 

 

Share this post


Link to post
Share on other sites

I have just checked my error_log and found some differences.

[15-Jun-2019 07:20:00 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/alt/php70/usr/lib64/php/modules/suhosin.so' - /opt/alt/php70/usr/lib64/php/modules/suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0
[15-Jun-2019 07:20:00 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/alt/php70/usr/lib64/php/modules/sqlite.so' - /opt/alt/php70/usr/lib64/php/modules/sqlite.so: cannot open shared object file: No such file or directory in Unknown on line 0
[15-Jun-2019 07:20:00 UTC] PHP Warning:  Module 'imagick' already loaded in Unknown on line 0
[15-Jun-2019 07:20:00 UTC] PHP Warning:  Module 'timezonedb' already loaded in Unknown on line 0
[15-Jun-2019 07:20:00 UTC] PHP Warning:  Module 'fileinfo' already loaded in Unknown on line 0
[15-Jun-2019 07:20:00 UTC] PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
[15-Jun-2019 07:20:00 UTC] PHP Warning:  Module 'pdo_mysql' already loaded in Unknown on line 0
[15-Jun-2019 07:20:00 UTC] PHP Warning:  Module 'pdo_sqlite' already loaded in Unknown on line 0

Share this post


Link to post
Share on other sites

@RAC

your original error was due to

Module compiled with module API=20090626
PHP    compiled with module API=20151012
 

so it's consistent that loading all extensions from a path with 20090626 will break everything!

there are presumably references to specific paths in your ini for the extensions that are failing.

I'd guess that last weekend your exact php compilation version changed - not necessarily the headline version like 5.6 or 7.0 - and that there's a mismatch between the extension paths in your ini and that.

When they changed the php compilation version the site broke altogether and someone commented out that line to get it back up. Get them to go back and do the rest of the job!


For a new install or if your store isn't mobile-friendly, get the community-supported responsive osCommerce (2.3.4.1 CE).

here: https://github.com/gburton/Responsive-osCommerce/releases

Working on generalising bespoke solutions for Quickbooks integration, Easify integration and pay4later (DEKO) integration at 2.3.x

Share this post


Link to post
Share on other sites
2 hours ago, RAC said:

What update has my host done to cause this problem? So I can go back to them.

The must have updated the php version at some point and in doing so have changed the paths used. As the php.ini file was changed go back to your host and tell them to sort it out. You have to esculate the ticket to urgent and give them a bolicking fo rmessing it up. If you have access to php.ini just check waht the new path to the extentions is on the server and update your php.ini file

go to admin/tools/Server Information

this will show you where you php.ini file is. However unless you have a local file you will have to get your host to either do this for you or give you acess to the file. You can make a custom php.ini file and add it to your home directory so you have more control on how it runs on your site.

How ever unless you know what your doing best just push your host to sort out the mess they have made.

image.png.5254bff43763db316475d7eafd765c56.png

will also show the extensions

image.png.418fe1337e0184680e2f662dc2df7ce8.png


 

Share this post


Link to post
Share on other sites

@BrockleyJohn  @JcMagpie

 

Thank you both.

I have sent yet another long message/complaint to my lack-luster host, WHUK, (fyi).

I am now looking for a new host, any suggestions anyone?

I will await their reply, however I will not hold my breath.

I will let you know what happens.

Shaun

 

 

Share this post


Link to post
Share on other sites

I don't believe that discussion of specific hosts and recommendations for hosting are permitted here.

As for the original problem, assuming 20090626 is a date, a ten year old file is likely to have a mismatch with current PHP (2015). Is there a reason for you to specify specific dates (versions) in your configuration files? I think you'll have to work with your host to see what extensions, etc. you actually need to specify, and for those, the proper way to do that.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×