Upgrade to PHP 7 on CentOS 7 (or CentOS 6)

I had a CentOS 7 system running WordPress and received the warning: WordPress has detected that your site is running on an insecure version of PHP.  The system was running PHP 5.6 which is end of life, so here are the steps I used to upgrade to the latest version recommended by WordPress at the time of this posting (PHP 7.3).

  1. If not already installed:
    sudo yum install epel-release
  2. Add the IUS repository that maintains updated PHP packages.
    More information can be found at the following site including these commands:
    https://ius.ioFor CentOS 7

    yum install \
    https://repo.ius.io/ius-release-el7.rpm \

    For CentOS 6

    yum install \
    https://repo.ius.io/ius-release-el6.rpm \

    Note: if you get Error: Nothing to do when  using the above commends it means you may already  have the repository installed and is safe to ignore.

  3. Since we are using IUS repository we will use the replace plugin
    More information about this plugin for reference:

    yum install yum-plugin-replace
  4.  The next step depends on your specific configuration. If you are on a stock CentOS 7 install you can use
    yum replace --replace-with php73-common php

    Note: if you receive Error: Package ‘php’ is not installed then you are not on a stock install and you must replace php with the specific version you have installed. Inspect the output of the command:

    yum list installed | grep php

    Then perform the yum replace command using the package name you have installed. For example:

    yum replace --replace-with php73-common php56u

    Note: if you receive WARNING: Unable to resolve all providers it probably means identical replacements for all php extensions could not be found which is typical. Press y to continue.

  5. This server was running Apache so it needs to be restarted for the new PHP to take effect:
    apachectl restart
  6. At this point the WordPress installation was broken: There has been a critical error on your website.   Setting WordPress into debug mode revealed the following Fatal error: Uncaught Error: Call to undefined function json_encode() … /wp-includes/functions.php:3820 To resolve it, install the json extension:
    yum install php73-json
  7. Then restart Apache again
    apachectl restart
  8. Now WordPress should be functional again and no longer reporting an out of date version of PHP.
Posted in Uncategorized | Leave a comment

Backup Job Fails for Windows Server with Veeam Agent Installed

Attempting to backup a Windows Server 2012 R2 Server with the Veeam Agent freshly installed and Backup and Replication server version 9.5 (also 10). The administrator credentials for the source server had been added to the destination server (Backup and Replication) and a backup job with type Windows Agent Backup was created. When running the job it would fail with error: Processing ServerName Error: Failed to connect to x.x.x.x:11731

The reason is because the source Windows Server was not properly added to the infrastructure of the destination Backup and Replication server. Checking the Programs and Features installed on the source Windows Server, only Veeam Agent for Microsoft Windows was listed. The Veeam Installer service was missing, which is triggered to install by the destination Backup and Replication server.

To resolve it, from Backup and Replication server navigate to Physical Infrastructure, Manually Added. Then perform a Rescan. Once complete you should see a confirmation that the Backup agent is installed on the source Server. Checking Programs and Features of the source Windows Server 2012 R2, the Veeam Installer Service should now be listed as installed.  The backup job on the destination server can now be restarted and should complete without the  previous failed to connect error.

Posted in Uncategorized | Leave a comment

Script to Automatically Rescan and Mount Software iSCSI Datastores on Startup for ESXi

Update 09-May-2020: The original script didn’t really work so I have commented it out.
Update 11-May-2020: Added method to search by Volume Name.

There are several reasons you may want to have ESXi rescan iSCSI at boot. For this example a FreeNAS guest VM was running an iSCSI target and sharing it back to the ESXi host. ESXi was then using it as a datastore with other VMs on it that also needed to be autostart. The trick is to start the FreeNAS guest and give it enough time to boot before letting ESXi proceed to the autostart step.

This script should be added to the following file in ESXi (using vi) so that it is preserved by ESXi upon reboot.
Note: the last line of this file should be preserved (exit 0).

#Establish our timer

#Power on the guest VM with the specified Vmid
#use the command vim-cmd vmsvc/getallvms to find which Vmid to use
vim-cmd vmsvc/power.on 1

#Now continuously rescan for the iSCSI device until it is found
#or the maximum time of 10 minutes is reached.
#This command will search all Logical Devices for one that has "Vendor_Name" in the Display Name (e.g., FreeNAS)
while ! esxcfg-scsidevs -c | grep -q 'Vendor_Name'

#Alternatively if you have multiple iSCSI targets that share the same Display Name
#(iSCSI Vendor) then you may want to instead search by Volume Name.
#This method allows you to single out a specific server since Volume Name is user configurable.
#The command below will search for the volume name 'Your_custom_volume_name' and that Mounted status is true.
#while ! esxcli storage filesystem list | grep -q "Your_custom_volume_name.*true"
    #print some debugging info to the syslog
    logger "local.sh: Forcing rescan since iSCSI target is not yet available..."
    #Rescan SCSI HBAs to search for new Devices, remove DEAD paths and update path state. 
    #This operation will also run an claim operation equivalent to the claimrule run command and a filesystem rescan.
    esxcli storage core adapter rescan --all

    #Now wait (in seconds) before checking again
    sleep 30

    #Increase the timer
    count=`expr $count + 30`

    #Check if maximum time has been reached (in seconds)
    if [ $count -ge 600 ]
       logger "local.sh: Aborting, maximum time reached while searching for iSCSI target."

logger "local.sh: Search time for iSCSI target was" $count "seconds."

#-------------- Old script is below, do not use

#Adjust the delay in seconds as needed to allow time for NAS to boot up fully
#sleep 300

#Enable iSCSI Initiator and rescan for iSCSI specific LUNs.
#esxcfg-swiscsi -e
#esxcfg-swiscsi -s

#Search for new VMFS datastores. If a new datastore has been detected, it is mounted in /vmfs/volumes/
#vmkfstools -V

#another delay just to be sure
#sleep 10

#Run the ESXi autostart script again to start all VMs that are on the datastore
#sh /usr/sbin/vmware-autostart.sh start




Posted in Uncategorized | Leave a comment

Enable BuddyPress Mentions and also Email Notifications in bbPress

BuddyPress @mentions were working perfectly within WordPress posts and comments however not in bbPress.

This is one solution to get @mention user lookups and an email notification when used in a topic or thread reply.  However a notification is not logged within BuddyPress.

First create or modify the following file in your WordPress install




function custom_bbpress_maybe_load_mentions_scripts(
$retval = false ) {
if ( function_exists( 'bbpress' ) && is_bbpress() ) {
$retval = true;
return $retval;
add_filter( 'bp_activity_maybe_load_mentions_scripts', 'custom_bbpress_maybe_load_mentions_scripts' );

Then you will need to install the bbPress Toolkit plugin for WordPress.

Once activated navigate to Tools -> bbP Toolkit in WordPress Dashboard. Then choose Extras at the top and confirm mentions are enabled.


A second option is to use the bbp Mentions Suggest plugin available at this website:

bbp Mentions Suggest

Posted in Uncategorized | Leave a comment

How to Install Latest WordPress on Ubuntu Server 18.04

These are the minimum steps I needed to get WordPress running on Ubuntu Server 18.04. It is based on the below guide at the time of this writing:

How to install WordPress


  1. During the install and setup of Ubuntu Server 18.04, the only option I chose beyond the defaults was to install Open SSH server but is not required depending on your needs.
  2. sudo apt install apache2
  3. Optional: if you want SSL support
    sudo a2enmod ssl
  4. sudo apt install mysql-server
  5. Set up a MySQL user and database for WordPress to use by using the debian-sys-maint user:
    sudo cat /etc/mysql/debian.cnf
    mysql -u debian-sys-maint -p(copy/paste the password from the previous cat output)
    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; CREATE DATABASE your_dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; GRANT ALL PRIVILEGES ON your_dbname.* TO 'username'@'localhost'; FLUSH PRIVILEGES; quit;
  6. sudo apt install php libapache2-mod-php php-mysql php-gd php-xml php-mbstring
  7. By default apache will look at /var/www/html location for your WordPress install, but you can modify it with these steps
    sudo nano /etc/apache2/sites-enabled/000-default.conf
    in this example we will change DocumentRoot line to be /var/www/wordpress
  8. Optional: if you want SSL support add this entire block<VirtualHost *:443>
    ServerAdmin [email protected]
    DocumentRoot /var/www/wordpress
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
  9. cd /var/www
  10. sudo curl -O https://wordpress.org/latest.tar.gz
  11. sudo tar xfvz latest.tar.gz
  12. sudo cp wordpress/wp-config-sample.php wordpress/wp-config.php
  13. sudo nano wordpress/wp-config.php
  14. Modify database_name_here, username_here, password_here
  15. sudo chown -R www-data:www-data /var/www/wordpress
  16. Allow .htaccess permissions in Apache2 (otherwise changing the Permalinks settings in WordPress will result in 404 errors, as well as plugins that rely on subfolders to serve content).sudo nano /etc/apache2/apache2.conf
    Find the section where Directory parameters are specified and add the following block:
    <Directory /var/www/wordpress/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
    </Directory>sudo a2enmod rewrite
  17. If you need to adjust maximum upload filesize and post size for PHP it is found in /etc/php/7.2/apache2/php.ini
    Then change upload_max_filesize and post_max_size
  18. sudo systemctl restart apache2
  19. Done
Posted in Uncategorized | Leave a comment

Suddenly Can’t Connect to UniFi Controller on Windows Server

Specific setup was Windows Server 2012 R2 and UniFi Controller 5.12.35.   The issue was that suddenly neither internal connections (LAN/private) nor external WAN (public/WAN) connections  could access the controller.  If Windows Firewall is enabled, the UniFi controller needs two apps allowed: UniFi DB Server and Java.

UniFi DB Server default location is
C:\Users\xxxx\Ubiquiti UniFi\bin\mongod.exe
where xxxx is the username

Java (32-bit) default location is
C:\Program Files (x86)\Java\jrex.x.x.x_xxx\bin\java.exe
where jrex.x.x.x_xxx is the folder name. This folder path changes depending on the version number of Java Runtime Environment installed.

The root cause was that Java was updated on the system but a new rule was not automatically created for it in Windows firewall. Upon inspection there were several rules for Java already present in the firewall but none were for the most recent version.

To check, navigate to Control Panel – Windows Firewall then choose the option for Allow an app or feature through Windows Firewall.

Find Java and then click the Details button. Here you can check if the path to java.exe matches the version that is installed.  You can manually add the new version by using the Allow another app button.

Once allowed check to see if the controller can be accessed again.

Posted in Uncategorized | Leave a comment

Crossflash Dell 0WFN6R 9341-8i to LSI 9300-8i IT Mode

These are the steps to crossflash a Dell 0WFN6R (SAS9341-8i) to an LSI 9300-8i. At the time of this guide the latest firmware available is P16.

All files needed for this guide can be downloaded here. The firmware and BIOS files were sourced directly from Broadcom’s website (Installer_P16_for_UEFI.zip and 9300_8i_Package_P16_IR_IT_FW_BIOS_for_MSDOS_Windows.zip specifically).

For UEFI method you will use sas3flash.efi.  You can perform this same procedure with BIOS method by instead using sas3flsh.exe. However if in BIOS mode you receive ERROR: Failed to initialize PAL. Exiting Program, then you must switch to the UEFI method.

  1. Make a record of the Assembly number and SAS Address from the stickers on the back of the card
  2. Create your bootable USB disk with Rufus, formatted as FreeDOS.  Extract the files from this guide to the root of the drive.
  3. Place jumper on TP12 located on the front rear of the card near the two SAS ports. Otherwise you will receive the error: No Avago SAS Adapters found! Limited Command Set Available! when trying to use SAS3Flash.
  4. Boot from the USB disk either UEFI or BIOS. For BIOS method substitute sas3flsh.exe for sas3flash.efi in all steps below.
  5. Navigate to the SAS3Flash binary on the USB drive
  6. Confirm the the 9341 card is detected:
    sas3flash.efi -list
  7. Perform preliminary flash of the firmware:
    sas3flash.efi -noreset -f SAS9300_8i_IT.bin
  8. Once you receive a confirmation that the flash was successful, power off the system and remove the jumper. Reinstall the card and boot off the USB drive.
  9. Wipe the card :
    sas3flash.efi -o -e 6
  10. Flash the firmware:
    sas3flash.efi -f SAS9300_8i_IT.bin
  11. At this point you can stop if you don’t want any BIOS on the card.  It is needed if you want to boot from a drive attached to the card.
  12. Flash the BIOS:
    sas3flash.efi -b mptsas3.rom
  13. Flash the UEFI rom:
    sas3flash.efi -b mpt3x64.rom
  14. Program the SAS address (don’t include hyphens as they will be added automatically): Note – you can perform this later at any time.
    sas3flsh.exe -o -sasadd XXXXXXX
  15. Program the board assembly (you DO need to include hyphens with this):
    Note – you can perform this later at any time.

    sas3flsh.exe -o -assem XXXXXXX
  16. Verify your results:
    sas3flash.efi -list
  17. You should see your SAS address, firmware version,  BIOS version, UEFI BSD Version and your board assembly.  Crossflashing is now complete.
Posted in Uncategorized | Leave a comment

Aquantia AQC108 No Network Status LEDs

Recent experience with an Aquantia AQtion AQC108 5G network card that was integrated in a motherboard (Supermicro X11SRA-F).    Plugging in an ethernet cable would not activate the port (status LEDs would not light up on either the NIC or the switch), so the NIC appeared dead.  However when booting into ESXi 6.7 the NIC would be detected as AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] but not be listed under Networking – Physical NICs indicating that no driver was found.  Turns out this NIC needs an OS that has a driver installed before the LEDs will activate. For example with the ESXi host machine the NIC was set up as Passthrough to a guest running Windows Server 2019 (which has the drivers built in).  The link LEDs then began working and the NIC functioned normally in the Windows guest.

Posted in Uncategorized | Leave a comment

Supermicro CSE-836 Chassis PWM 80mm Fan Swap

Upgraded a Supermicro CSE-836 from 3 pin fans to 4 pin PWM fans. Here is the before and after matrix of part numbers:

Middle Fans (Qty 3) FAN-0070L
San Ace 80 9G0812G103
Rear Exhaust Fans (Qty 2) FAN-0062L
San Ace 80 109p0812c2041
Middle Fans (Qty 3) FAN-0094L4
San Ace 80 9G0812P1G09
Rear Exhaust Fans (Qty 2) FAN-0062L4
San Ace 80 109P0812P2C031
Hot swap cables 4 pin to 4 pin (Qty 5) CBL-0088L

Note: the above matrix was for replacements in kind. The latest CSE-836 has these fans:
Middle: FAN-0126L4 (Qty 3)
Rear: FAN-0125L4 (Qty 2)

Note: an alternative 4 pin hot swap cable is CBL-0216L

Posted in Uncategorized | Leave a comment

Errno 28 When Trying to Update VMware ESXi 6.7.0 Update 3

When trying to update/upgrade ESXi 6.7.0 Update 3 (via software profile update command) you may run into the following error below. This was a host running specifically Update 3 build 15018017 trying to update to build 15160138.

[Errno 28] No space left on device
vibs = VMware_locker_tools-light_11.0.1.14773994-15160134
Please refer to the log file for more details.

When attempting to update to build 16075168, the failure is related to: vibs = VMware_locker_tools-light_11.0.5.15389592-15999342, you can substitute this version into the commands below, keeping everything else the same.

First make sure you have Swap enabled on a datastore.  In vSphere Web Access, navigate to Host->Manage->Swap and choose a datastore.

Then manually install the VMware_locker_tools package by following these steps via SSH on the host:

cd /tmp

wget http://hostupdate.vmware.com/software/VUM/PRODUCTION/main/esx/vmw/vib20/tools-light/VMware_locker_tools-light_11.0.1.14773994-15160134.vib

esxcli software vib install -f -v /tmp/VMware_locker_tools-light_11.0.1.14773994-15160134.vib

Once you receive verification that the Operation finished successfully, try the profile update command again to patch ESXi.

Posted in Uncategorized | Leave a comment