After upgrading to IBM i 7.2 or higher, the ZENDSVR6 Apache instance will not start

Follow

Issue

After an upgrade to IBM i 7.2, the ZENDSVR6 Apache instance will not start.  This is due to an incompatibility between Apache 2.4 and Apache 2.2.

Environment

Zend Server for IBM i version 7.0.0 or higher, running on IBM i recently upgraded to version 7.2 or higher.

Resolution

Note:  IBM i 7.2 requires version 7.0.0 or higher of Zend Server.  If you are running an 
earlier version of Zend Server, please upgrade.

The upgrade to IBM i 7.2 includes an upgrade of Apache from version 2.2 to 2.4. In 2.2, the Include directive is considered an optional include. The included file does not have to exist. In 2.4, the Include directive is changed to mean the included file must exist, and the new IncludeOptional directive acts the way the Include directive did in prior versions.

For new installations into IBM i 7.2, the installer can determine that the IncludeOptional directive is needed in the ZENDSVR6 Apache configuration. However, when an existing configuration already exists during the upgrade to 7.2, there is no opportunity for the Zend installer to make this adjustment, and it must be done manually.

This procedure requires changing Apache configuration files.  As with all configuration file changes, it is a good idea to back up the files before changing them.  Here are the required changes:

In file /www/zendsvr6/conf/httpd.conf:

Change this:

Include /usr/local/zendsvr6/etc/sites.d/globals-*.conf
Include /usr/local/zendsvr6/etc/sites.d/vhost_*.conf

To this:

IncludeOptional /usr/local/zendsvr6/etc/sites.d/globals-*.conf
IncludeOptional /usr/local/zendsvr6/etc/sites.d/vhost_*.conf

In file /usr/local/zendsvr6/etc/sites.d/zend-default-vhost-10080.conf:

Change this:

Include /usr/local/zendsvr6/etc/sites.d/http/__default__/0/*.conf

To this:

IncludeOptional /usr/local/zendsvr6/etc/sites.d/http/__default__/0/*.conf

In each line, you are only changing the Include directive to IncludeOptional.

Save the changes.  It should now be possible to start Apache.

Alternate Resolution

Another way to resolve this is to create dummy files so that there is always something for the Include to find.  These files do not need to have any directives in them.  They can be totally blank, but it might be good to put some explanatory comments in them describing why they are there. 

For example, you could create these files:

/usr/local/zendsvr6/etc/sites.d/globals-blank.conf
/usr/local/zendsvr6/etc/sites.d/vhost_blank.conf
/usr/local/zendsvr6/etc/sites.d/http/_default_/0/blank.conf

This is a less preferable solution, as it creates a potential conflict with any application named 'blank' that might be deployed via Zend Deployment.  However, it does have the advantage of being able to do it ahead of time in preparation for the upgrade to IBM i 7.2.  The IncludeOptional directive is not valid in Apache 2.2, so it cannot be substituted in the configuration prior to the upgrade.

Have more questions? Submit a request

Comments

  • Avatar
    Don Andrews

    This appears to be true for IBM i 7.1 as well. The HTTP Admin console flagged Include directives as "No file found" errors but changing the directives to IncludeOptional caused the error flags to disappear.

  • Avatar
    Don Andrews

    Correction to above post: IBM i 7.1 does in fact have HTTP Server 2.2 and will fail with IncludeOptional directives even though the HTTPAdmin syntax checker says it's OK (and flags the Include ... directives as errors because no file is found). Looks like IBM was going to ship Apache 2.4 with IBM i 7.1 but changed their mind and forgot to revert the HTTPAdmin console.

  • Avatar
    Tim Ullman
    ZENDSVR6 http server was working fine with V7R1. Had this exact problem described here after V7R1 to V7R2 upgrade. The changes listed here fixed the problem on V7R2.
Powered by Zendesk