Technical Changelog

The Sosik-Hamor Family website is currently running on SilverStripe CMS, an open-source web content management system. Sean Sosik-Hamor is using the domain to learn SilverStripe because of its popularity among non-profit organizations, businesses, and governments.

The default template is being used for now because there's no reason to get fancy. Yet!

Wednesday, August 5, 2020

During installation and troubleshooting, I noticed a mysqlnd error while running ./vendor/bin/sake dev/build "flush=1". This error also appeared tens of thousands of times in error_log even though the mysqlnd PHP library was installed and available:

[2020-08-04 16:09:46] error-log.NOTICE: E_USER_NOTICE: mysqlnd PHP library is not available, numeric values will be fetched from the DB as strings {"code":1024,"message":"mysqlnd PHP library is not available, numeric values will be fetched from the DB as strings","file":"/home/REDACTED/public_html/vendor/silverstripe/framework/src/ORM/Connect/MySQLiConnector.php","line":89} []

If this were a standard LAMP installation, or a deployed container, then the fix would have been straightforward. I simply would have checked /etc/php/7.2/apache2/conf.d to make sure that mysqlnd loading properly.

But, since this is a managed cPanel installation, my troubleshooting options were limited to CLI within my homedir and the web dashboard. Luckily, the fix was somewhat intuitive, albeit falling into "did you turn it off and turn it back on" territory.

I ran PHP Selector by running cPanel Dashboard → Software → Select PHP Version. I then bumped the PHP version up to 7.4 which selected a new combination of mysql modules by default. Both mysqlnd and nd_mysqli were now selected and the errors immediately subsided.

Thanks to CloudLinux OS for their article on Missing MySQL extension or "MySQL_ND vs MySQL".

Wednesday, July 29, 2020

Initial installation of SilverStripe CMS. Note: All PHP dependencies are managed by Composer. Only run composer from within the webroot of your website. Run composer info to see information about currently-installed packages.

Installed wilr/silverstripe-googlesitemaps

composer require "wilr/silverstripe-googlesitemaps"

Hitting the links in sitemap.xml resulted in a 500 Internal Server Error so I followed the troubleshooting tip and browsed to /sitemap.xml?flush=1. All URLs on the site then returned 500 Internal Server Error with a default unpopulated template and no content.

If SilverStripe returns a 500 Internal Server Error after running composer to require a dependency then run the following from the webroot: ./vendor/bin/sake dev/build "flush=1"

This solved the problem after successfully running, but returned the error:

mysqlnd PHP library is not available, numeric values will be fetched from the DB as strings

The mysqlnd PHP library is active but not being seen by sake for some reason.

Created the default mysite/_config/googlesitemaps.yml as suggested by the documentaton.

I've also found an interesting quirk where the default editor adds an   instead of a space every time you paste something into the editor.