Tiny Core Linux
Tiny Core Extensions => TCE Q&A Forum => Topic started by: parky_dw on October 03, 2018, 09:15:54 AM
-
I've been going round in circles here with PHP7, MariaDB and Wordpress. Hopefully some one here can help me out.
My starting point is the Wordpress error:
"Your PHP installation appears to be missing the MySQL extension which is required by WordPress."
I can't see anything wrong with my php installation. (php7-cli.tcz, php7-ext.tcz, php7-mod.tcz).
The .ini file has
extension_dir=/usr/local/lib/php/extensions/no-debug-zts-20170718
In the files sitting in that directory we have:
bcmath.so mysqli.so shmop.so
bz2.so oci8.so simplexml.so
calendar.so odbc.so snmp.so
..... ........ ......
The command php -m gives me a shorter list which overlaps with some of those above. It doesn't include mysqli.so.
Is this listing just compiled in modules or should I be seeing the complete list from the extension_dir?
I tried a simple php script to check a database and got:
rose@mirror:~$php -f db-connect-test.php
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /home/rose/db-connect-test.php:10
Stack trace:
#0 {main}
thrown in /home/rose/bd-connect-test.php on line 10
Next I set enable_dl in the ini file to On and added the line
dl("mysqli.so");
This gave me the error message:
PHP Warning: dl(): Unable to load dynamic library 'mysqli.so'
(tried: /usr/local/lib/php/extensions/no-debug-zts-20170718/mysqli.so (libmysqlclient.so.18: cannot open shared object file: No such file or directory),
/usr/local/lib/php/extensions/no-debug-zts-20170718/mysqli.so.so (/usr/local/lib/php/extensions/no-debug-zts-20170718/mysqli.so.so: cannot open shared object file: No such file or directory))
in /home/rose/bd-connect-test.php on line 10
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /home/rose/bd-connect-test.php:12
Stack trace:
#0 {main}
thrown in /home/rose/bd-connect-test.php on line 12
What is going on here? It reports [color=#ff0000]tried: /usr/local/lib/php/extensions/no-debug-zts-20170718/mysqli.so[/color] and the file is there....
Finally I tried:
rose@mirror:~$ php --re mysqli.so
Exception: Extension mysqli.so does not exist
rose@mirror:~$ php --ri mysqli.so
Extension 'mysqli.so' not present.
rose@mirror:~$
What is going on? Why is the mysqli.so extension not being found and used?
-
The MySQL extension (or any other PHP extension) will not load if any dependent libraries are not available. Have you downloaded and installed the MySQL extensions?
-
I also installed mariadb.tcz and mariadb-client.tcz. I'm just repeating a successful build I did back in January which I documented here: http://www.parkytowers.me.uk/thin/Linux/TinycoreWP.shtml (http://www.parkytowers.me.uk/thin/Linux/TinycoreWP.shtml)
I don't think any dependencies are missing....
I see the php version has advanced to 7.2.1 (from 7.1.12 previously) and that the problem I had with the sample ini file and the extension_dir at that time have been fixed.
-
Maybe I was a little hasty in my last post.....running ldd I see
rose@mirror:/usr/local/lib/php/extensions/no-debug-zts-20170718$ ldd mysqli.so
linux-gate.so.1 (0xb77e4000)
libmysqlclient.so.18 => not found
libz.so.1 => /usr/lib/libz.so.1 (0xb77aa000)
libm.so.6 => /lib/libm.so.6 (0xb776a000)
libssl.so.1.0.0 => /usr/local/lib/libssl.so.1.0.0 (0xb771e000)
libcrypto.so.1.0.0 => /usr/local/lib/libcrypto.so.1.0.0 (0xb75cf000)
libdl.so.2 => /lib/libdl.so.2 (0xb75cb000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb75b4000)
libc.so.6 => /lib/libc.so.6 (0xb74a1000)
/lib/ld-linux.so.2 (0x8005f000)
...and find shows...
/usr/local/mysql/lib/libmysqlclient.so.18.0.0
/usr/local/mysql/lib/libmysqlclient.so.18
/usr/local/mysql/lib/libmysqlclient.so
I thought I'd addressed the issue with the mysql shared libraries not being in the usual /usr/local/lib with an entry in /etc/ld.so.conf I obviously need to revisit.
Thanks AndyJ for the pointer.
-
I was having the same error where php wasn't loading mysqli.
The only extra step I've done, besides what is at http://www.parkytowers.me.uk/thin/Linux/TinycoreWP.shtml (http://www.parkytowers.me.uk/thin/Linux/TinycoreWP.shtml),
was to uncomment the mysqli extension (around line 942) on the file /usr/local/etc/php7/php.ini
extension=mysqli
Thanks for all the information parky_dw of setting-up tiny core for wordpress.
-
I have done that as well. I need to update the page - either I didn’t document what I did fully last time or some defaults have changed in the latest releases. For example the default socket is different between PHP and MariaDB and I found I had to set it explicitly in the PHP ini file for Wordpress to connect to the database.
-
What version of TC and arch are you using?
-
Version reports as 8.2.1. 32-bit architecture.