Installing on Synology NAS - Installer doesn't detect Database support in PHP

Started by jasonwatkins, October 08, 2018, 03:29:03 PM

Previous topic - Next topic

jasonwatkins

I've got a Synology NAS and i've installed MariaDB 5 & 10 and PHP 5.6 and 7 as well as phpMyAdmin and Apache HTTP Server 2.2

I've enabled web services and uploaded the installation file into the folder and unzipped it.

I then go to my URL and add /install.php and I get the first page of the installer up and

"!!Critical Error!
The installer was unable to detect any database support in PHP. Please ask your host to ensure that PHP was compiled with the desired database, or that the proper extension is being loaded."

And I can't work it out.   I've created a couple of test databases with some users and granted all to each one, but it obvious won't do a lot if the installer doesn't even detect the database support.

I've googled around for a while and there's no hints i can find as the only other sites i've found mentioning synology drives and smf have people successfully installing it without an issue.

any ideas would be most welcome, thanks.

Arantor

How exactly did you install PHP on it? Depending on exactly how you installed it, you may not have added database support (or you may have added it but not enabled it)

Also, Apache 2.2 is no longer maintained and Apache 2.4 should be used instead.

jasonwatkins

i just used the standard synology package installer for php.   i'll see if i can re-install it and check if there are any options i've missed.

i'll try apache 2.4 though - that's on there as well.

#edit

just re-installed php 5.6 and it doesn't ask for any settings or anything at any point - just click "install" then it's done.   installed apache 2.4 as well and i'm still getting the same error on the installation page.

Arantor

Hmm, I wonder if it sets up any database connectors and if so which one(s) it might use.

jasonwatkins

i did try to find a separate mysql package for synology drives, but they all use mariadb unfortunately.  phpymyadmin has a mysql database in it, which i've also granted all on, but still no luck

Arantor

But that's not what you're missing.

PHP out of the box doesn't support any databases. All of the bits that let PHP talk to a database are plugins - even MySQL support - just mostly enabled by default.

If you make a little page with the phpinfo() command in it, what does that say?

jasonwatkins

i've just made the page, but there's a ton of stuff on it - what would i be looking for ?

Arantor



Arantor

OK, so you're missing either of the connectors for MySQL itself (mysqlnd is only part of the story, on its own PHP can't talk to MySQL)

So... the next question is whether the PHP installer actually bundled any of the connectors or not and that, unfortunately, I can't tell you - I don't have a Synology NAS :(

If this were a Windows installation, I'd say it probably came with all the libraries and it was just a case of commenting out the line in php.ini (the one mentioned at the top of phpinfo()) and restarting Apache.

If this were a Ubuntu/Debian installation, I'd be saying to go use apt-get (or apt) to install php-mysql and php-mysqli.

But I've never come across a Synology NAS before now, sorry :(

jasonwatkins

no worries, i appreciate your help so far.   i can actually get to the php.ini file if it helps ..

Arantor

In there will be a section called extensions, and very likely every entry has a ; at the start indicating it is commented out. Look for ones referencing mysql and mysqli (maybe not pdo_mysql though) and if they're commented out, try taking the ; off the start, saving and restarting Apache.

jasonwatkins


jasonwatkins

well this is what i found in the php.ini file regarding mysql .. as you can see, nothing commented out

[mysql]
mysql.allow_persistent = 1
mysql.connect_timeout = 60
mysql.max_persistent = -1
mysql.default_socket =
mysql.max_links = -1
mysql.default_host =
mysql.allow_local_infile = 1
mysql.default_port =
mysql.trace_mode = 0
mysql.default_password =
mysql.default_user =

[mysqli]
mysqli.max_persistent = -1
mysqli.allow_persistent = 1
mysqli.max_links = -1
mysqli.reconnect = 0
mysqli.rollback_on_cached_plink = 0
mysqli.default_socket =
mysqli.default_pw =
mysqli.default_host =
mysqli.default_user =
mysqli.default_port = 3306
mysqli.allow_local_infile = 1

Arantor



Arantor

A quick Google search took me to the Synology FAQs where it shows how to enable the extensions - you will need the mysql and mysqli extensions on PHP 5.6.

https://www.synology.com/en-uk/knowledgebase/DSM/tutorial/Application/How_to_host_a_website_on_Synology_NAS

jasonwatkins

considering the amount of time i spent googling for a solution, you'd think i'd probably look at the one thing that's right under my nose :)

enabled the relevant extensions and it's now working.  thanks again for your help

Arantor


Advertisement: