Issue

Zend Server for IBM i version 2020 was our first version for IBM i to use an RPM package instead of a Licensed Program for distribution. It was also our first version to be compiled with the 64 bit compiler.  Zend Server for IBM i version 2021 continues to use this new installation method.  It can be installed on the same partition as older versions of Zend Server (prior to 2020) to allow side by side testing before using the new version for production.  To upgrade from earlier versions will require a migration.  This article provides some notes to help you get started with this task.

Environment

Zend Server for IBM i version 2021 installed parallel to Zend Server 6, 7, 8, 9 or 2019 on any supported version of IBM i.

Resolution

Zend Server for IBM i supports parallel installations of Zend Server 2021 with Licensed Program versions of Zend Server on the same machine or partition. They are different installations on the IBM i, which allows for testing of the new version when there is only one IBM i partition available. I

For the purposes of this article, we have written Zend Server 8 when we mean Zend Server 6, 7, or 8.  It just seemed cleaner.  In some areas we just say Zend Server 2019 when we mean Zend Server 9, 2018, or 2019. And we sometimes just say 2021, when we mean 2020 or 2021.


Versions 8 and older use a library named ZENDSVR6 and uses directories /usr/local/zendsvr6 and /www/zendsvr6.  Versions 9 and 2019 use a library named ZENDPHP7 and uses directories /usr/local/zendphp7 and /www/zendphp7.  Versions 2020 and 2021 use a library named ZENDPHP74 and uses directories /usr/local/zendphp74 and /www/zendphp74.


Download and Install Zend Server 2021

To begin, please download and install Zend Server 2021.  Here are the instructions for downloading and installing Zend Server 2021 for IBM i:

Install Zend Server 2021 for IBM i

Copy Applications and Other Content to Zend Server 2021

The simplest installations typically have PHP scripts and other content in the /htdocs directory for the Apache instance.  This content can simply be copied to the new /htdocs folder.

  1. Copy your content from '/www/zendsvr6/htdocs' or '/www/zendphp7/htdocs' to '/www/zendphp74/htdocs'.
  2. Verify the scripts in '/www/zendphp74/htdocs' and any subfolders have *RX permissions granted to user QTMHHTTP.

You should now be able to execute your /htdocs scripts in Zend Server 2021 by changing the port.  For example, if you had a script '/www/zendphp7/htdocs/hello.php', using Zend Server 2019 you could run it in your browser at this address:

http://<your i5 ip address>:10090/hello.php

You could copy the script into '/www/zendphp74/htdocs/hello.php', grant user QTMHHTTP *RX permissions to it, then run it using Zend Server 2021 at this address:

http://<your i5 ip address>:10100/hello.php

If you have any deployed Virtual Hosts, Libraries, and/or Applications in an earlier version of Zend Server, simply deploy them in Zend Server 2021 using the User Interface. 

If you have manually created Virtual Hosts in the Apache configuration for the ZENDSVR6 or ZENDPHP7 instance of Apache, you will need to also create them in the ZENDPHP74 instance.

If any of your Virtual Hosts are using ports other than the defaults, remember they cannot use the same port while both your previous version of Zend Server and Zend Server 2021 are active.  Temporarily assign different ports for use in Zend Server 2021 while testing.  You can change them later when you go into production with Zend Server 2021.

Change the Path for PHP-CLI Calls

If you have calls to php-cli in CL programs, you will need to change the path to use the new version:

Where for Zend Server 8 you would use this:

/usr/local/zendsvr6/bin/php-cli

And for Zend Server 2019 you would use this:

/usr/local/zendphp7/bin/php-cli

For Zend Server 2021 you will use:

/usr/local/zendphp74/bin/php-cli

Change the Path for Full Path References

Some customers prefer to use full paths in include() and require() functions.  This can provide a performance boost as the IFS can be a little slow finding a relative path.  Scan your scripts for '/zendsvr6' or '/zendphp7' and replace with '/zendphp74'.  Be careful about automating this step, to avoid unintended consequences.  And of course, test everything.

Java Bridge is Like the Highlander, There Can Only Be One

The Java Bridge daemon uses the same port for all versions of Zend Server, and performs the same functions, so there can only be one version of the Java Bridge Daemon running at any given time.  Since it is accessed by the port, scripts running in any version can use it.

Multiple Apache Instances

Zend Server does not support any Apache instances other than the default (ZENDPHP74 for ZS 2021, ZENDPHP7 for ZS 9, 2018 or 2019 and ZENDSVR6 for ZS 8).  We do have customers who have implemented additional Apache instances by adding a FastCGI configuration to these other instances.  If you have any such instances, you can redirect them to version 2021 by changing any occurrences of '/zendsvr6' or '/zendphp7' to '/zendphp74' in the fastcgi.conf for that instance.  However, you might need to do other things, and it is easy to mess this file up, so please be careful.  This activity is not covered under your Zend Support subscription, so please be sure you know what you are doing, or have whoever set this up for you in the first place come back and make the needed changes.

Customers using Virtual Hosts or multiple Apache instances may find that migration presents an opportunity to use Deployment instead to configure and manage their Virtual Hosts and Applications.  Many of these multiple Apache instances configurations were done at a time when Zend Server did not have Deployment functions built in. 

Access the User Interface at Port 10101

For Zend Server 8, the User Interface is found in your browser at port 10081:

http://<your IBMi ip address>:10081

For Zend Server 9, 2018 or 2019, the User Interface is found in your browser at port 10091:

http://<your IBMi ip address>:10091

For Zend Server 2020 or 2021, the User Interface is found in your browser at port 10101:

http://<your IBMi ip address>:10101

Review Changes for PHP 7

Each point release of PHP has migration notes related to the previous version.  So for example, migration notes for PHP 7.0 show changes that would need to be made to PHP 5.6 code.  So, if you are moving from PHP 5.5 to 7.3, you would need to review the migration notes for PHP 5.6, 7.0, 7.1, 7.2 and 7.3.  So, how far you are coming determines how far back you need to go.  Zend Server 2021 offers PHP 7.1, 7.2, 7.3, and 7.4.  Here are the links:

Migrating from PHP 7.3.x to PHP 7.4.x

Migrating from PHP 7.2.x to PHP 7.3.x

Migrating from PHP 7.1.x to PHP 7.2.x

Migrating from PHP 7.0.x to PHP 7.1.x

Migrating from PHP 5.6.x to PHP 7.0.x

Migrating from PHP 5.5.x to PHP 5.6.x

Migrating from PHP 5.4.x to PHP 5.5.x

If you are coming from 5.2 or 5.3, you will likely notice a pattern in the links that will help you find the pages you need.

Test Everything

Before you go into production with Zend Server 2021, test everything.  Test until you are sure everything works.  Test until you know everything works.  Test until you know that you know that everything works.  If you have never built any kind of test plan to exercise your entire site, now would be an excellent time to do that.  This article is just a guide to the most common considerations for the migration.  We can't think of everything.  The only way to be sure you have taken care of everything is to verify that you have taken care of everything.  Test it all.

Set Start up Entries

When you are ready to go live with version 2021, you will want to stop earlier versions from starting automatically whenever you restart your IBM i.  You will also want to have version 2021 start automatically.

For Zend Server 8 and earlier, use this command to prevent automatic start up:

RMVAJE SBSD(QSYSWRK) JOB(ZS_STR_SBS)

For Zend Server 9, 2018 or 2019, use this command to prevent automatic start up:

RMVAJE SBSD(QSYSWRK) JOB(ZS9_STRSBS)

To set Zend Server 2021 to automatically start up:

GO ZENDPHP74/ZSMAINT

Use option "20. Zend Server Subsystem action at IPL".  Use F10 to set it to automatically start at IPL.  If it is already set to start at IPL, F10 will not be available.